2011-12-29 58 views

回答

3

收藏夾有一個.add.remove方法,當您使用其中一個方法時,它們會觸發集合上的addremove事件。這就是你不用視圖就可以綁定的方式。

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 selectorfunction。該功能可以調用this.collection.add,其中將創建多米諾骨牌效應。

視圖與集合或模型交互的方式是綁定到事件,您可以定義這些事件並在視圖內處理它們。有幾個特殊選項,如果通過,將可用於查看:model, collection, el, id, className, and tagName.

+0

所以要進一步研究,點擊刪除按鈕,您可以引發一個刪除事件,由集合拾取,集合刪除給定的模型(在這個例子中是ship),它觸發remove事件,視圖可以聽到它,並解除它的事件並從dom中移除視圖。我錯過了什麼? – Sander 2011-12-29 22:55:10

+0

我更新了我的帖子,使事情更清晰。 – Shane 2011-12-29 23:49:55

相關問題