我无法确定如何快速完成,只需为Backbone.Marionette视图上触发的事件附加一个监听器。
我现在可以通过.on
添加一个监听器来完成我正在寻找的东西,但是通过事件或触发器哈希有一个快速的方法吗?像这样的东西似乎应该有效但不是:
return Marionette.ItemView.extend({
triggers: {
"click .close": "menu:close"
},
events: {
"menu:close @": "close",
},
close: {
// do stuff
}
}
答案 0 :(得分:3)
<强>更新强>
实际上有一种(简单的)方法可以完全按照你想要的方式进行。
// Itemview
var itemView = Marionette.ItemView.extend({
initialize: function() {
Marionette.bindEntityEvents(this, this, this.events);
},
template: "#item",
triggers: {
"click .btn": "menu:performAction"
},
events: {
"menu:performAction": "performAction"
},
performAction: function() {
console.log('test');
}
});
简而言之,这会将包含散列的events属性绑定到views事件。
小提琴:http://jsfiddle.net/8T68P/
文档:https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.functions.md#marionettebindentityevents
旧答案
看到这个小提琴:http://jsfiddle.net/Cardiff/K5TTQ/
听取这样的事件确实不会奏效。如果您碰巧在视图中使用.on
方法。请使用listenTo
。视图关闭时,将正确清理。像这样:
// Itemview
var itemView = Marionette.ItemView.extend({
initialize: function() {
var view = this;
view.listenTo(view, "menu:performAction", view.performActionFromListenTo);
},
template: "#item",
triggers: {
"click .btn": "menu:performAction"
},
performActionFromListenTo: function() {
console.log('test');
}
});