我有一组模型,每个模型都附有一个视图。该集合还具有全局视图。模型视图最好是删除相应的模型,还是集合(或集合视图)应该这样做?
答案 0 :(得分:3)
收藏集使用.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'}
]);
当视图初始化时,它会将集合的add事件绑定到运行this.add
,这是视图的一个功能。 (可选)您可以使用delegateEvents API来处理在视图中运行该函数的DOM元素event selector
到function
的映射。该函数可以调用this.collection.add
,其中会产生多米诺骨牌效应。
视图与集合或模型交互的方式是通过绑定到事件,您可以定义这些事件并在视图中处理它们。有几个特殊选项,如果通过,将可用于视图:model, collection, el, id, className, and tagName.