मैं एक DS.Store
जो DS.RESTAdapter
और एक ChatMessage
वस्तु ऐसी के रूप में परिभाषित का उपयोग करता है:परिणाम एंबर-डेटा से फ़िल्टर करने के लिए आइटम जोड़ने
App.ChatMessage = DS.Model.extend({
contents: DS.attr('string'),
roomId: DS.attr('string')
});
ध्यान दें कि एक चैट संदेश एक कमरे (सादगी के लिए नहीं दिखाया गया है) में मौजूद है
loadMessages: function(){
var room_id = App.getPath("current_room.id");
this.set("content", App.store.find(App.ChatMessage, {room_id: room_id});
}
यह एक DS.AdapterPopulatedModelArray
को content
सेट:, मेरे चैट संदेशों नियंत्रक (जो Ember.ArrayController
फैली) में तो मैं केवल कमरे के लिए संदेशों को लोड करना चाहते हैं उपयोगकर्ता में है और मेरा विचार खुशी से सभी लौटे हुए चैट संदेशों को {{#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
पर रूम_आईडी फ़िल्टर हटा देता हूं तो यह अपेक्षित के रूप में अपडेट होता है।
this.pushObject(message)
App.store.createRecord
से लौटा संदेश संदेश के साथ एक त्रुटि उठाता है।
मैं परिणामों को मैन्युअल रूप से आइटम कैसे जोड़ूं? जहां तक मैं कह सकता हूं कि DS.AdapterPopulatedModelArray
और DS.FilteredModelArray
दोनों अपरिवर्तनीय हैं, ऐसा कोई प्रतीत नहीं होता है।
आप सही हैं, यह एक AdapterPopulatedModelArray है। मैंने सवाल अपडेट किया है - टाइपो के लिए खेद है! – rlivsey