Backbone 视图和控制器之间的事件
Backbone events between view and controller
我正在尝试在模型-视图-控制器模式中使用 Backbone 事件。我的控制器只是一个 JavaScript class,所以我像这样扩展它以支持 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()
方法从不执行。我做错了什么?
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()
控制器
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
});
}
})
}
我正在尝试在模型-视图-控制器模式中使用 Backbone 事件。我的控制器只是一个 JavaScript class,所以我像这样扩展它以支持 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()
方法从不执行。我做错了什么?
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()
控制器
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
});
}
})
}