2011-09-04 13 views
0

我正在使用Rails + Backbone + Faye來製作示例聊天應用程序。Rails + Backbone + Faye消息傳遞,如何實例化模型並從DOM中爲所有訂戶移除其元素?

我目前能夠使用Faye的消息傳遞功能在創建事件中寫入DOM,但我實際上沒有實例化骨幹模型。阿拉Ryan Bates的教程中,我只是裏面的

create.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(); 

骨幹將調用刪除方法,並把刪除請求/實體/ 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客戶端而不是在聊天模式中。這甚至有可能嗎?

回答

1

那麼,你應該刪除模型,讓用戶界面監聽事件並刷新自己。一旦用戶界面反映了模型的變化,你就是最好的。

您在這裏遇到的問題是Backbone集合/模型不是標識映射。所以你在視圖中處理的模型對象是不一樣的,你將實例化並從faye回調中移除。如果你的消息集合是全局訪問的,那麼我建議你從那裏得到實例將其刪除。

+0

謝謝。是的,這就是我必須做的。我傳遞了物品的ID並從集合中獲取了模型,並使用其模型將其從DOM中移除 – jdkealy

相關問題