我有两种不同的方式在我的网站上显示我的模型,当然我会用不同的视图来处理它们。
但是,我希望能够以某种方式连接这些视图,这样当特定模型的一个视图上发生事件时,它也可以触发另一个视图上的事件。
为简单起见,假设我有一个集合,并且我用两个生成相同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 B
时触发 mouseover 事件subview A
,反之亦然?