Я использую Rails + Backbone + Faye для создания примера приложения чата.
В настоящее время я могу использовать возможности обмена сообщениями Faye для записи в DOM по событию создания, хотя на самом деле я не создаю экземпляр модели магистрали. Учебник Ала Райана Бейтса, я просто звоню внутрь
создать.js.erb
<% broadcast "/messages/new" do %>
$("#chats-table").append("<%= escape_javascript render :partial => "chat", :locals => { :chat => @chat } %>");
<% end %>
И опубликовать его в другом javascript:
faye.subscribe("/messages/new", function(data) {
eval(data);
});
Я хотел бы немного реорганизовать это и использовать модели магистрали. Хорошим вариантом использования будет метод удаления.
Моя модель чата привязана к событию клика, удаление которого вызывает:
model.destroy();
this.remove();
Backbone вызовет метод удаления и поместит запрос на удаление в /entity/id
Это также отправляет /views/delete.js.erb рельсов. Там я вызываю вспомогательный метод, который публикует сообщение с кодом Ruby.
<% broadcast "/messages/delete" do %>
<%= @chat.to_json.html_safe; %>
<% end %>
слушатель
var faye = new Faye.Client('http://0.0.0.0:9292/faye');
faye.subscribe("/messages/delete", function(data) {
});
Здесь мне было интересно, могу ли я каким-то образом создать экземпляр удаленной базовой модели, чтобы я мог вывести это событие на всеобщее обозрение и удалить его из DOM. По сути, я хотел бы вызвать this.remove(); внутри клиента Faye, а не в модели чата. Это вообще возможно?