Ich habe eine Ember.ArrayController
, die die Ergebnisse einer DS.Store#find
Abfrage enthält.Hinzufügen von Element zu ModelArray, ohne dass es in DS.Store # commit
Wenn die App eine Benachrichtigung von Pusher erhält, dass ein neues Element hinzugefügt worden ist, möchte ich es in die Liste hinzuzufügen:
App.Item = DS.Model.extend({
name: DS.attr("string")
});
App.latestItemsController = Ember.ArrayController.create({
init: function() {
// load a page of data from the server
this.set("content", App.store.find(App.Item, {page: 1}));
// subscribe to events from our app-wide message pump
// which dispatches events from Pusher
App.get("eventQueue").on("item-added", _(this.itemAdded).bind(this));
},
// called whenever we're notified of a new item being added by someone else
itemAdded: function(data) {
// don't want to do this as it'll save next time we do a App.store.commit();
App.store.createRecord(App.Item, data);
// can't do this because it's a DS.Model and tells you to use createRecord:
// plus as it's a filtered result even if the App.Item.create succeeded
// then we'd get an error because this.content is immutable [1]
this.pushObject(App.Item.create(data));
// ... not sure what else to try!
}
});
Dies ist ähnlich in der Natur auf die folgenden Fragen:
[1] Adding item to filtered result from ember-data
[2] create temporarty non persistent object in Ember-Data
Der Versuch, das Gleiche zu tun. Hast du es jemals funktioniert? – odigity