Die Bindung An ItemView die change-Ereignisse
Ich würde gerne re-Rendern, eine Liste mit Marionette.ItemView
wenn das entsprechende Modell in ItemView
ändern.
Irgendeine Idee, über den besten Weg, um aktiv in dieser Aufgabe?
//Collection passed to Marionette.CompositeView
myCollection.attributes = [
{
id: 1,
name: 'bar'
closed: false
},
….
];
//Marionette.ItemView
myModel.set({
closed: true
}); //when this model change I would like to re-render the copositeView
//or remove the Marionette.ItemView
P. S:
Wenn ich versuche, den folgenden code(1)Marionette.ItemView
,
wenn ich das Modell speichern, bekomme ich die folgende Fehlermeldung(2).
(1)
//Marionette.ItemView
initialize: function () {
this.model.on('change', this.render);
}
(2)
Uncaught TypeError: Object [object Object] has no method 'serializeData'
- Ich havent arbeitete mit Marionetten, sondern Sie zu binden, müssen die Modelle ändern von Ereignissen in den Blick, so dass der Blick es versteht, re-Rendern selbst.
- Ich habe versucht, um es in der Marionette.ItemView aber ich bekomme die folgende Fehlermeldung
Uncaught TypeError: Object [object Object] has no method 'serializeData'
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist eine gute Praxis, verwenden Sie die _.bindAll in Ihrer initialize-Methode. Kann dein Problem bezieht sich auf den Umfang.
Wenn bindAll nicht beheben Ihr Problem bitte fügen Sie Ihre Modell und Ansicht.
bindTo
ermöglicht Marionette zu stoppen, die Bindung, wenn die Ansicht geschlossen. Es ist definitiv der Weg zu gehen.Marionette bietet eine
modelEvents
Eigenschaft, die kümmert sich um die korrekte Bindung an das Modell Ereignisse.In Ihrem ItemView einfach fügen Sie den folgenden, um allgemein die ItemView-update, wenn sich das Modell ändert:
Genießen!
Für die Veranstaltung verbindlich und unverbindlich, arbeiten automatisch in der Marionette, die Sie verwenden sollten, die Ansicht
bindTo
Methode. Zum Beispiel:Auch
bindTo
stellt den Zusammenhang richtig, so brauchen Sie nicht_.bindAll()
mit ihm.Können Sie aktivieren dieses Verhalten standardmäßig im ItemView verändert Ihr Vorbild:
Vielleicht so etwas wie, was Sie versuchen zu tun?
Standardmäßig Marionette.ItemView hat eine serializeData-Funktion, die nur wieder das Ergebnis des Aufrufs von toJSON auf der diese.Modell. Natürlich können Sie diese Funktion überschreiben, indem Sie Ihre eigenen serializeData auf Ihre ItemView-Erweiterung genauso wie bei der Erweiterung irgendeine andere javascript-Objekt. HTH