我有一個DS.Store
它使用DS.RESTAdapter
並且被定義爲這樣的ChatMessage
對象:添加項從餘燼數據濾波結果
App.ChatMessage = DS.Model.extend({
contents: DS.attr('string'),
roomId: DS.attr('string')
});
。注意,在一個房間(未示出爲簡單起見)存在聊天消息,所以在我的聊天消息控制器(延伸Ember.ArrayController
)我只是想加載消息房間裏的用戶目前在:
loadMessages: function(){
var room_id = App.getPath("current_room.id");
this.set("content", App.store.find(App.ChatMessage, {room_id: room_id});
}
這臺content
到DS.AdapterPopulatedModelArray
我的看法愉快地在{{#each}}
區塊中顯示所有返回的聊天消息。
現在它涉及到增加一個新的消息,我有在同一個控制器以下內容:
postMessage: function(contents) {
var room_id = App.getPath("current_room.id");
App.store.createRecord(App.ChatMessage, {
contents: contents,
room_id: room_id
});
App.store.commit();
}
這將啓動一個Ajax請求保存在服務器上的消息,都好,到目前爲止,但它不不更新視圖。這很有意義,因爲它是一個篩選結果,如果我刪除了App.store.find
上的room_id篩選器,那麼它會按預期進行更新。
嘗試this.pushObject(message)
與從App.store.createRecord
返回的消息記錄引發錯誤。
如何手動將項目添加到結果?據我所知,似乎沒有辦法,因爲DS.AdapterPopulatedModelArray
和DS.FilteredModelArray
都是不可變的。
你說得對,這是一個AdapterPopulatedModelArray。我更新了這個問題 - 抱歉錯誤! – rlivsey 2012-04-08 17:58:47