我有两种不同的方式在我的网站上显示我的模型,我用不同的视图处理它们。触发从一个视图到另一个视图的事件
但是,我希望能够以某种方式连接这些视图,以便某个事件发生在某个特定模型的某个视图上时,它也可以触发另一个视图上的事件。
为了简单起见,我们假设我有一个集合,并用两个视图表示集合,这两个视图会生成相同的ul
列表。 (实际上,观点当然不同)。
HTML
<ul class="view-a">
<li class="subview-a">Model 1</li>
<li class="subview-a">Model 2</li>
</ul>
<ul class="view-b">
<li class="subview-b">Model 1</li>
<li class="subview-b">Model 2</li>
</ul>
骨干
viewA = Backbone.View.extend({
tagName: 'ul',
className: 'view-a',
});
viewB = Backbone.View.extend({
tagName: 'ul',
className: 'view-b',
});
subViewA = Backbone.View.extend({
tagName: 'li',
className: 'subview-a',
events: {
'mouseover':'over',
},
over: function() {
console.log('mouse over on A');
}
});
subViewB = Backbone.View.extend({
tagName: 'li',
className: 'subview-b',
events: {
'mouseover':'over',
},
over: function() {
console.log('mouse over on B');
},
});
你可能会问:为什么不具有相同的子视图?在这个例子中,这两个子视图都是li
,但在实际实现中并没有。
那么如何在subview A
上徘徊时触发subview B
上的鼠标悬停事件,反之亦然?
如果在两个视图中都呈现相同的模型,也许你可以通过模型?可以在模型中注册两个视图,并且当一个模型中发生事件时,使用'this.model.get('subview-b')''来访问另一个视图。 – jackwanders
都是由相同骨干模型代表的子视图中的对应模型? – jakee
是的!相应的型号 – AlexBrand