在 CompositeView 中访问 Marionette 的 ItemView 元素

Accessing Marionette's ItemView elements inside CompositeView

此问题涉及Marionette.js

可以说我有一个 ItemView: ItemView1 它呈现一个带有
<div id="div1itemview">

的模板

在 CompositeView 中:CompositeView1,我有一个模板,其中有一个
<div id="div1CompositeView">
CompositeView1 也有 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 也是如此吗?)

谢谢!

更稳健的方法是让 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 是另一个类似的选项。

ItemView 的元素可以由父 CompositeView 访问,只需使用它们在 CompositeView 中的(ItemView 的元素)id。

推论:与 ItemView 元素相关的事件可以在父 CompositeView 中触发!