有人能弄清楚为什么我的活动没有被收听吗?
如果我将事件和函数放在 ItemView 中,则触发器永远不会在视图控制器中被注意到
如果我将事件侦听器和相应的函数放在 CollectionView 中,触发器会在视图控制器中被注意到,这是快乐的日子,除了我无法访问单个模型。
ListingView.ListingItem = Marionette.ItemView.extend({
tagName: "div",
className: "grid-flex mix-10-70-15 row-wrap itemDetail",
template: "#listing-item",
/*
Using the code below in the ItemView gives me access to
the current model, but the trigger isn't picked up in the controller
*/
events: {
"click":"editItemDetail"
},
editItemDetail: function() {
console.log('You clicked');
this.trigger("itemsListing:editCurrentItem", this.model);
}
});
ListingView.ListingItems = Marionette.CollectionView.extend({
tagName: "div",
className: "listItemsWrapper",
template: "#listing-items",
itemView: ListingView.ListingItem,
/*
Putting the code below in the CollectionView
gets acted on by the controller. I get the alert
but I can't get access to the selected model
*/
events: {
"click":"editItemDetail"
},
editItemDetail: function() {
console.log('You clicked');
this.trigger("itemsListing:editCurrentItem", this.model);
}
});
和控制器代码:
var listingView = new ListingView.ListingItems({
collection: listCollection
});
tillRollView.on("itemsListing:editCurrentItem", function(model) {
alert('Gotcha baby!');
console.log(model);
});
我想知道为什么控制器不喜欢我在 ItemView 中的触发器(我在我的应用程序的其他地方成功地做到了这一点)。我还想知道是否可以从我的 CollectionView 中获取模型。无论哪种方式都会让我的应用程序正常工作,在此先感谢。