Aktualisierung backbone-Ansicht bei der Auflistung ändern
Wenn die erste Seite meiner Rückgrat app laden Hole ich meine Sammlung dann Durchlaufen Sie die Seite zu Rendern:
Seite Router:
home: function ()
{
new BodyView ({page:'home'});
new HomeView();
new PostView();
postCollection = new PostCol({userId:getId(),start:0,offset:50});
postCollection.fetch();
postView = new Post({collection:postCollection});
},
Post View:
el:'.stream',
initialize: function ()
{
this.collection.on('reset',this.render.bind(this));
this.collection.on ('change',this.render.bind (this));
},
render: function ()
{
this.collection.each (function (model)
{
actor = new Actor ({model:model});
this.$el.append (actor.render().el);
},this);
return this;
},
Was ich versuche zu erreichen, ist jetzt, dass, wenn ein Benutzer speichern einige Daten in einer anderen Ansicht den Beitrag aktualisieren der Ansicht. Dies ist, was ich getan habe, sondern seine nicht funktioniert.
Andere Ansicht:
post = new PostModel ({userid:getId(),post:postText,objectid:0});
post.save({},
{
success: function (response)
{
postCol = new PostCol ({userId:getId(),start:0,offset:50});
postView = new Post ({collection:postCol});
postCol.fetch ().success({change:true});
},
error: function (response)
{
console.log (response);
}
}
);
InformationsquelleAutor user2054833 | 2013-04-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht es aus wie Sie
postCollection
ist global, so können Sie aktualisieren Sie das bestehende Modell, anstatt ein neues zu erstellen.Statt
this.collection.on ('change',this.render.bind (this));
in der Post-Ansicht, man könnte dies in den einzelnen Schauspieler-Ansicht, so dass die ganze Sammlung nicht neu Rendern.Nicht unbedingt. Sie können eine gemeinsame Sammlung und übergeben Sie die Instanz in den beiden Ansichten. Die Idee ist, dass wenn man änderungen anzeigen, die ein Modell in dieser gemeinsamen Sammlung, die andere Sicht zu erhalten die 'change' - event und dann können Sie das update/re-Rendern, wie gebraucht.
InformationsquelleAutor Paul Hoenecke