Javascript 如何在父视图中绑定子视图处理事件的上下文
我有以下主干视图:Javascript 如何在父视图中绑定子视图处理事件的上下文,javascript,backbone.js,Javascript,Backbone.js,我有以下主干视图: var ParentView = Backbone.View.extend({ events: { "contextmenu .child-view" : "handleChildView" }, initialize: function () { // create child view var child = new ChildView; }, handleChildV
var ParentView = Backbone.View.extend({
events: {
"contextmenu .child-view" : "handleChildView"
},
initialize: function () {
// create child view
var child = new ChildView;
},
handleChildView: function () {
}
});
var ChildView = Backbone.View.extend({
initialize: function () {
this.el.addClass('child-view');
}
});
我需要在handleChildView处理程序中处理childView的contextmenu事件。但我需要获得对childView和目标DOM元素的引用
我该怎么做呢?这对你有用吗
var ParentView = Backbone.View.extend({
events: {
"click .child-view .contextmenu" : "handleChildView"
},
initialize: function () {
// create child view
var child = new ChildView;
},
handleChildView: function () {
}
});
var ChildView = Backbone.View.extend({
className:'child-view'
, initialize: function () {
this.el.addClass('child-view');
}
});
您可能必须在父视图(在DOM中)内渲染子视图。我通常会尽量避免这种情况。我认为这是一种反模式,因为我认为每个视图应该只处理自己的事件 当需要在视图之间通知事件时,我使用事件总线模式 请参阅我先前发布的答案: 这是相似的 您应该在应用程序中定义事件总线。 在您的ChildView中,在发生事件时发布事件(如单击) 在家长视图中,订阅此活动:
var ParentView = Backbone.View.extend({
initialize: function () {
//subscribe events:
EventBus.on('childViewClicked', this.handleChildView, this);
},
handleChildView: function ([params you wanna receive]) {
}
});
请您解释清楚:“但是我需要获得对childView和目标DOM元素的引用”您的目标是什么?我需要在parentView中处理childView的contextmenu
var ParentView = Backbone.View.extend({
initialize: function () {
//subscribe events:
EventBus.on('childViewClicked', this.handleChildView, this);
},
handleChildView: function ([params you wanna receive]) {
}
});