Flu*_*yte 6 collections backbone.js
我有以下代码.一切都很完美,但我想弄清楚如何从集合中删除一个项目(注意:我是Backbone的新手).我已经查看了其他一些帖子,但我似乎可以弄清楚:
Todos = (function(){
//////////////////////////
//
// MODEL
//
//////////////////////////
var TodoModel = Backbone.Model.extend({
defaults: {
item: null
}
});
//////////////////////////
//
// COLLECTION
//
//////////////////////////
var TodoCollection = Backbone.Collection.extend({
model: TodoModel
});
//////////////////////////
//
// VIEW
//
//////////////////////////
var TodoView = Backbone.View.extend({
el: $('#todos'),
itemField: $('#new-item'),
initialize: function(){
this.el = $(this.el);
},
events: {
'submit form': 'addItem',
'click .remove-item': 'removeItem',
// Debug
'click #print-collection': 'printCollection'
},
template: $('#item-template').html(),
render: function(i) {
var templ = _.template(this.template);
this.el.children('ul').append(templ({item: i}));
},
addItem: function(e) {
e.preventDefault();
item = this.itemField.val();
// Call render
this.render(item);
// Clear field
this.itemField
.val('')
.focus();
// Add to collection
var newItem = new TodoModel({
item: item
});
this.collection.add(newItem);
},
removeItem: function(e) {
$(e.target).parent('li')
.fadeOut(300,function() {
$(this).remove();
});
// NEED TO REMOVE FROM COLLECTION...
},
printCollection: function(){
this.collection.each(function(item) {
console.log(item.get('item'));
});
}
});
//////////////////////////
//
// SELF
//
//////////////////////////
self = {};
self.start = function(){
new TodoView({collection: new TodoCollection()});
};
return self;
});
Run Code Online (Sandbox Code Playgroud)
Chr*_*erg 12
您可以使用backbone的remove方法从集合中删除模型:
从集合中删除模型(或模型数组).触发"删除"事件,您可以使用静音来抑制.如果您是一个侦听"remove"事件的回调,则从集合中删除模型的索引可用作options.index.
如果你想这样做,你必须有一种方法来获取要从click事件中删除的模型.基本上有两种方法可以做到这一点:
data-id属性),以便事件处理程序可以在调用它时获取该id并使用它来获取模型(在这种情况下将其从集合中删除).Derick Bailey关于每种方法的优点和缺点都有一篇很好的帖子,我建议你去看看(我在这里基本上解释了他).
希望有所帮助.