我有兩種不同的方式在我的網站上顯示我的模型,我用不同的視圖處理它們。觸發從一個視圖到另一個視圖的事件
但是,我希望能夠以某種方式連接這些視圖,以便某個事件發生在某個特定模型的某個視圖上時,它也可以觸發另一個視圖上的事件。
爲了簡單起見,我們假設我有一個集合,並用兩個視圖表示集合,這兩個視圖會生成相同的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