0
我有一個模型集合,每個模型都附有一個視圖。這個系列還有全球觀點。對於模型視圖來說,最好是照顧刪除相應的模型,還是集合(或集合視圖)應該這樣做?Backbone模型或集合應該如何處理視圖?
我有一個模型集合,每個模型都附有一個視圖。這個系列還有全球觀點。對於模型視圖來說,最好是照顧刪除相應的模型,還是集合(或集合視圖)應該這樣做?Backbone模型或集合應該如何處理視圖?
收藏夾有一個.add
和.remove
方法,當您使用其中一個方法時,它們會觸發集合上的add
或remove
事件。這就是你不用視圖就可以綁定的方式。
var ships = new Backbone.Collection();
ships.bind('add', function(ship) {
alert('Ahoy ' + ship.get('name') + '!');
});
ships.add([
{name: 'Flying Dutchman'},
{name: 'Black Pearl'}
]);
因此,將集合附加到構造函數的視圖中。這只是使現有的收集通過this.collection
var ShipView = Backbone.View.extend({
collection: ships
});
這是你如何可以使用視圖綁定。
// Create collection instance.
var ships = new Backbone.Collection();
// Create view class.
var ShipView = Backbone.View.extend({
collection: ships,
initialize: function() {
// This is binding add, to the view function.
this.collection.bind('add', this.add);
},
add: function(ship) {
alert('Added ' + ship.get('name') + '!');
}
/*Optional for DOM.
events: {
'click .addMyShip': 'addShip'
},
addShip: function(eventObject) {
this.collection.add([models]);
}*/
});
// Create view instance.
var shipView = new ShipView();
// Add two ships.
ships.add([
{name: 'Flying Dutchman'},
{name: 'Black Pearl'}
]);
當視圖初始化時,它結合了集合的活動添加到運行this.add
這是視圖的功能。或者,您可以使用delegateEvents API來處理在視圖中運行該功能的映射DOM元素event selector
到function
。該功能可以調用this.collection.add
,其中將創建多米諾骨牌效應。
視圖與集合或模型交互的方式是綁定到事件,您可以定義這些事件並在視圖內處理它們。有幾個特殊選項,如果通過,將可用於查看:model, collection, el, id, className, and tagName.
所以要進一步研究,點擊刪除按鈕,您可以引發一個刪除事件,由集合拾取,集合刪除給定的模型(在這個例子中是ship),它觸發remove事件,視圖可以聽到它,並解除它的事件並從dom中移除視圖。我錯過了什麼? – Sander 2011-12-29 22:55:10
我更新了我的帖子,使事情更清晰。 – Shane 2011-12-29 23:49:55