Ich benutze Marionette 2.4 und haben ein LayoutView, die auf ein Ereignis in der ChildView gehört. Wenn das Ereignis ausgelöst wird, suche ich nach einem vorhandenen Modell in der Sammlung und wenn es nicht dort ist, erstelle ich ein neues Modell und füge es der Sammlung hinzu. Wenn es gefunden wird, entferne ich das Modell aus der Sammlung. Das Problem ist, dass das Ereignis zweimal zu feuern scheint. Wenn es zum ersten Mal ausgelöst wird, wird das Modell erstellt. Wenn es jedoch zweimal ausgelöst wird, sucht es das neu erstellte Modell in der Sammlung und entfernt es anschließend.Marionette beim Hinzufügen eines Elements zur Sammlung Ereignis wird zweimal ausgelöst
var layout = Marionette.LayoutView.extend({
childEvents: {
'channel:selected': 'onChildviewChannelSelected'
},
onChildviewChannelSelected: function (childView, args) {
var linkCollection = this.getRegion('regionWithCollectionView').currentView.collection;
var modelToUpdate = linkCollection.where({channel: args.currentTarget.value});
if(modelToUpdate) {
this.removeModel(linkCollection, modelToUpdate);
} else {
this.addModel(linkCollection, args.currentTarget.value);
}
},
removeModel: function (collection, model) {
collection.remove(model);
},
addModel: function (collection, channel) {
var newEntity = new MyApp.Entities.Link();
newEntity.set('channel', channel);
collection.add(newEntity);
}
});
und hier ist das Kind Ansicht, dass die Brände ‚Kanal: ausgewählt‘ Ereignis ....
var childView = Marionette.ItemView.extend({
events: {
'change input[type="checkbox"]': 'channelSelected'
},
channelSelected: function(args) {
this.triggerMethod('channel:selected', args);
}
});
Jede Idee, warum der childView den ‚Kanal: ausgewählt‘ feuert zweimal Ereignis?
Es ist nicht die Ansicht, die die Sammlung enthält, die hinzugefügt wird, aber vielleicht passiert etwas, wenn eine Sammlung hinzugefügt wird, die das Ereignis aus irgendeinem Grund erneut auslöst.