Rückgrat Sammlung Hinzufügen Ereignis Auslösen, Sobald
Ich habe eine Backbone-Sammlung und wenn ich ein neues Modell, um es den "hinzufügen" - event scheint nicht zu funktionieren wie ich es erwarten würde. Ich habe bound 2 Ansichten zu hören, für das hinzufügen von Ereignissen auf der Sammlung, aber nur eine scheint zu bekommen Kenntnis von dem Ereignis, und wenn dies geschieht, STELLEN keine Anfrage an meinen server. Wenn ich entfernen Sie die zweite Bindung, die anderen Werken-und die PUT-Anforderung gesendet wird. Hier ist der code-Schnipsel:
var FlagList = Backbone.Collection.extend({
model: Flag //model not shown here... let me know if it would help to see
});
var FlagCollectionView = Backbone.View.extend({
el: $('ul.#flags'),
initialize: function() {
flags.bind('add', this.addFlag, this); //this one doesn't fire!!
},
addFlag: function(flag) {
alert("got it 1"); //I never see this popup
}
});
var AddFlagView = Backbone.View.extend({
el: $("#addFlagPopup"),
events: {
"click #addFlag": "addFlag"
},
initialize: function() {
flags.bind('add', this.closePopup, this); //this one fires!!
}
addFlag: function() {
flags.create(new Flag);
},
closePopup: function() {
alert("got it 2"); //I see this popup
}
});
var flags = new FlagList;
var addFlagView = new AddFlagView;
var flagCollectionView = new FlagCollectionView;
- Ist dies die tatsächliche Reihenfolge der Ausführung? sprich: funktioniert das event von 'auf #addFlag' geschickt bekommen, bevor Sie Sie initialisieren die flagCollectionView? Es ist wichtig, dass Sie binden Ereignisse zu modellieren und die Sammlung, bevor Sie erwarten, dass das Ereignis auslösen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser code funktioniert bei mir:
überprüfen Sie die jsFiddle
Dein problem ist woanders.
Ein paar Vorschläge:
ID vs-Klassen
haben Sie über Ihre qualifizierte Selektor durch die Kombination von einer Klasse und einer id. jQuery ermöglicht, aber der ID-Selektor sollte eindeutig sein, auf der Seite sowieso so ändern
el: $('ul.#flags')
zuel: $('ul#flags')
.Nutzung Backbone
Möchte ich ausdrücklich meinen Sammlungen und/oder Modelle, um meine Ansichten und verwenden Sie die Magie
collection
undmodel
Attribute views.das bedeutet nun, dass in Ihrem Blick, werden Sie automatisch Zugriff auf diese.Sammlung
unverbindlich Ereignisse zu vermeiden, ghost Ansichten
Wie es aussieht muss ich Zustimmen, @fguillen, dass dein problem irgendwo sein müssen, wie Sie bei der Initialisierung der view, wie in meinem Kommentar habe ich schon erwähnt, dass es wahrscheinlich im Zusammenhang mit timing, sprich: Bindung Ihrer Veranstaltung, um die Sammlung nach der " add " - Ereignis bereits ausgelöst.
Wenn du hier gelandet, nachdem Sie die gleichen dummen Fehler, den ich machte, sicherzustellen, dass Sie haben:
und NICHT: