0

这是我用来创建树结构的代码复合视图片段。

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

4

1 回答 1

6

您已将视图本身设置为使用menuItemcss 类进行渲染。在任何主干视图(这不是 Marionette 特有的)中,如果您想直接处理视图元素上的事件(不是其中的一个子元素),您可以在没有选择器的情况下指定您的事件。

在您的情况下,它将是:

events: {
    "click": "show"
}

这将el直接使用“click”事件配置视图,并且show当您单击该视图的 HTML 的任何部分时将调用该方法。

于 2012-06-28T12:43:55.670 回答