Backbone.js 删除模型
Backbone.js removing the model
我已经尝试了几个小时,但没有成功。如果你能在图像上看到,我有稍微复杂的模型。图片取自调试中的 Chrome。
我需要从 collection 中删除一个模型,还 我需要能够更改 URL,其中 backbone拍摄其 ajax 以进行删除。所以本质上,这是我的模型结构:
attributes:
favorites {
bookmarkedArticles: [{id: 123123},{id: ...}],
bookedmarkedSearches: [{}],
dispatchesMailds: []
}
如何删除 bookmarkedArticles 中 ID 为 123123 的模型?
我试过这个:
var model = new metaModel(
{
favourites: {
bookmarkedArticles: {
id: "123123"
}
}
}
);
model.destroy();
还有这个
aamodel.headerData.collection.remove(model);
完全没有成功。
提供的信息并没有给出很多细节,但我会考虑两种情况尝试回答:
选项A:
您正在尝试删除集合中具有 bookmarkedArticle.id="123123" 的模型。如果是这种情况,并且考虑到 bookmarkedArticles 它只是一个对象数组,我建议使用下划线方法 filter 过滤集合,然后删除过滤器返回的模型。
var id = 123123;
var modelsToDelete = aamodel.headerData.collection.filter(function(model){
// find in the bookmarked articles
return _.find(model.get('bookmarkedArticles'), function(ba){
return (ba.id === id);
});
});
_.each(modelsToDelete, function(model){
model.destroy();
});
选项 2:如果您想使用 'destroy' 方法删除与您的主模型关联的已添加书签的文章“123123”,首先您必须将 'bookmarkedArticles' 转换为 Backbone.Collection 因为它只是一个对象数组,所以 Backbone 有一些实用程序可以让您轻松地做到这一点:
https://github.com/blittle/backbone-nested-models
但默认情况下这是不可能的,那么,如果你想删除'bookmarkedArticle'你可以创建Backbone.Model然后使用方法destroy。示例:
var BookmarkedArticle = Backbone.Model.extend({
url: function(){
return '/bookmarkArticle/' + this.id;
}
});
new BookmarkedArticle({"id": "123123","master": "5",...}).destroy();
希望这些信息对您有用,并提供一些指导来解决您的问题。
我已经尝试了几个小时,但没有成功。如果你能在图像上看到,我有稍微复杂的模型。图片取自调试中的 Chrome。
我需要从 collection 中删除一个模型,还 我需要能够更改 URL,其中 backbone拍摄其 ajax 以进行删除。所以本质上,这是我的模型结构:
attributes:
favorites {
bookmarkedArticles: [{id: 123123},{id: ...}],
bookedmarkedSearches: [{}],
dispatchesMailds: []
}
如何删除 bookmarkedArticles 中 ID 为 123123 的模型?
我试过这个:
var model = new metaModel(
{
favourites: {
bookmarkedArticles: {
id: "123123"
}
}
}
);
model.destroy();
还有这个
aamodel.headerData.collection.remove(model);
完全没有成功。
提供的信息并没有给出很多细节,但我会考虑两种情况尝试回答:
选项A: 您正在尝试删除集合中具有 bookmarkedArticle.id="123123" 的模型。如果是这种情况,并且考虑到 bookmarkedArticles 它只是一个对象数组,我建议使用下划线方法 filter 过滤集合,然后删除过滤器返回的模型。
var id = 123123;
var modelsToDelete = aamodel.headerData.collection.filter(function(model){
// find in the bookmarked articles
return _.find(model.get('bookmarkedArticles'), function(ba){
return (ba.id === id);
});
});
_.each(modelsToDelete, function(model){
model.destroy();
});
选项 2:如果您想使用 'destroy' 方法删除与您的主模型关联的已添加书签的文章“123123”,首先您必须将 'bookmarkedArticles' 转换为 Backbone.Collection 因为它只是一个对象数组,所以 Backbone 有一些实用程序可以让您轻松地做到这一点:
https://github.com/blittle/backbone-nested-models
但默认情况下这是不可能的,那么,如果你想删除'bookmarkedArticle'你可以创建Backbone.Model然后使用方法destroy。示例:
var BookmarkedArticle = Backbone.Model.extend({
url: function(){
return '/bookmarkArticle/' + this.id;
}
});
new BookmarkedArticle({"id": "123123","master": "5",...}).destroy();
希望这些信息对您有用,并提供一些指导来解决您的问题。