Cha*_*son 3 node.js backbone.js
我有一个集合,我没有运气从它删除一个特定的模型.
使用fetch()从服务器中提取集合,然后使用数据填充视图.该集合只包含一个id列表.获取后,集合看起来像这样:
d {**length: 9**, models: Array[9], _byId: Object, _byCid: Object, _ioEvents: Object…}
_byCid: Object
_byId: Object
_callbacks: Object
_ioEvents: Object
addRoom: function () { [native code] }
joinRoom: function () { [native code] }
length: 9
models: Array[9]
0: d
_callbacks: Object
_escapedAttributes: Object
_pending: Object
_previousAttributes: Object
_silent: Object
attributes: Object
**_id: "50c6cf36ece4f5f327000006"**
__proto__: Object
changed: Object
cid: "c3"
collection: d
__proto__: x
1: d
2: d
3: d
4: d
5: d
6: d
7: d
8: d
length: 9
__proto__: Array[0]
removeRoom: function () { [native code] }
__proto__: x
Run Code Online (Sandbox Code Playgroud)
现在,当我从集合中删除模型时,我会这样做
// called from the collection class so this = collection
this.remove({_id:data._id});
Run Code Online (Sandbox Code Playgroud)
没有任何反应,没有错误,也没有任何错误.当我记录集合时,它具有完全相同的数据.任何帮助,将不胜感激.
那不是多么Collection#remove有效.从精细手册:
去掉
collection.remove(models, [options])从集合中删除模型(或模型数组).
这是一个对象:
{_id: data._id}
Run Code Online (Sandbox Code Playgroud)
不是模特.即使您没有model为集合指定属性,集合仍将包含Backbone.Model实例.因此,您必须将您data._id的模型转换为模型,然后将该模型交给remove:
var m = collection.where({ _id: data._id})[0];
collection.remove(m);
Run Code Online (Sandbox Code Playgroud)
理想情况下,您将为您的集合创建一个模型"类",以便您可以设置idAttribute:
var M = Backbone.Model.extend({ idAttribute: '_id' });
var C = Backbone.Collection.extend({ model: M });
Run Code Online (Sandbox Code Playgroud)
然后你可以Collection#get用来查找模型_id:
var m = collection.get(data._id);
collection.remove(m);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7144 次 |
| 最近记录: |