以下是我正在创建树结构的代码compositeView片段。
var TreeView = Backbone.Marionette.CompositeView.extend({
template: "#filterTemplate",
className:"menuItem",
tagName: "ul",
initialize: function(){
this.collection = this.model.type;
counter=0;
},
events: {
'click .menuItem': 'show'
},
show: function(event) {
var target = $(event.target);
console.log(target);
},
appendHtml: function(collectionView, itemView){
// ensure we nest the child list inside of
// the current list item
$(itemView.el).attr("id","innerMenu"+counter);
$(itemView.el).attr("class","innerMenu");
collectionView.$("li:first").append(itemView.el);
counter++;
}
});
树变得完美,但事件未被绑定或未被触发。永远不会调用Show方法。我正在使用Backbone.Marionette v0.9.1
答案 0 :(得分:6)
您将视图本身设置为使用menuItem
css类进行渲染。在任何骨干视图中(这不是特定于Marionette),如果您想直接处理视图元素上的事件(而不是其中一个子元素),则指定没有选择器的事件。
在你的情况下,它将是:
events: {
"click": "show"
}
这将直接使用“click”事件配置视图的el
,并且当您单击此视图的HTML的任何部分时,将调用show
方法。