我正在尝试在模型 - 视图 - 控制器模式中使用Backbone事件。我的控制器只是一个JavaScript类,所以我像这样扩展它以支持Backbone事件:
function Controller() {
_.extend(this, Backbone.Events);
this.listenTo(view, 'some:event', this.onSomeEvent);
this.onSomeEvent = function() {
// ... This code never executes.
}
}
我的视图是一个Backbone视图,当单击一个按钮时会执行此操作:
onClick: function() {
this.trigger('some:event');
}
onClick()
方法响应按钮单击而执行,但控制器的onSomeEvent()
方法永远不会执行。我做错了什么?
答案 0 :(得分:1)
this.onSomeEvent
之前定义 this.listenTo
。现在,this.onSomeEvent
在被指定为监听器时未定义。
你也可以像这样定义你的控制器
function Controller() {
_.extend(this, Backbone.Events);
this.listenTo(view, 'some:event', this.onSomeEvent);
}
Controller.prototype.onSomeEvent = function() {
// code
};
并按照new Controller()
答案 1 :(得分:-1)
控制器
this.listenTo(currentView, 'AdminMenu:click', function (data) {...})
查看
return {
index: Marionette.ItemView.extend({
template:file,
events: {
'click .admin-menu-ref': 'goToMenuItem'
},
goToMenuItem: function (e) {
e.preventDefault();
this.trigger('AdminMenu:click', {
target: e.currentTarget
});
}
})
}