在 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 中触发!
此问题涉及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 中触发!