在CompositeView

时间:2015-10-14 21:34:26

标签: javascript marionette

这个问题与Marionette.js有关 假设我有一个ItemView:ItemView1,它会生成一个具有<div id="div1itemview">

的模板

在CompositeView:CompositeView1中,我有一个模板,其中<div id="div1CompositeView">复合视图1也有itemView: ItemView1

我正在定义CompositeView1和ItemView1,最终的html将是:

<div id="div1CompositeView">

    Outer div for doing things

    <div id="div1ItemView">

        Inner div for doing things

    </div>

</div>

我的问题是:我们可以在CompositeView1中访问"click #div1ItemView"事件吗?

换句话说 - 我们是否可以访问(父)CompositeView中的(子)ItemView元素?

(对于CollectionView及其ChildView,是否也适用?)

谢谢!

2 个答案:

答案 0 :(得分:1)

更强大的方法是让CompositeView使用triggers监听从ItemView调度的事件:

var MyItemView = Backbone.Marionette.ItemView.extend({
    triggers: {
        'click': 'do:something'
    }
});

var compositeView = Backbone.Marionette.CompositeView.extend({
    childView: MyItemView,
    onChildviewDoSomething: function () {
        console.log('do something');
    }
});

childEvents是另一种类似的选择。

答案 1 :(得分:0)

只需在CompositeView中使用它们(ItemView&#39; s的元素)id,父CompositeView就可以访问ItemView的元素。

推论:可以在父CompositeView!

中触发与ItemView元素相关的事件