0

これは、ツリー構造を作成するために使用するコード 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 を使用しています

4

1 に答える 1

6

menuItemcss クラスでレンダリングするようにビュー自体を設定しました。任意のバックボーン ビュー (これは Marionette に固有のものではありません) で、ビューの要素のイベントを (その子要素ではなく) 直接処理する場合は、セレクターを使用せずにイベントを指定します。

あなたの場合、それは次のようになります。

events: {
    "click": "show"
}

これelにより、「クリック」イベントを使用してビューが直接構成showされ、このビューの HTML の任意の部分をクリックするとメソッドが呼び出されます。

于 2012-06-28T12:43:55.670 に答える