让服务器返回一个JSON对象,如下所示:
{
'key1':'value'
'key2':{
'key2_0':'value'
}
}
还有一个系列:
var Collection = Backbone.Collection.extend({
url:api.url//which returns the object above
});
var collection = new Collection();
collection.fetch({
success:function(data){
//do something
}
});
现在我需要在整个应用程序中使用集合的某些属性,但是说我需要key1
,我总是要做collection.at(0).get('key1');//returns 'value'
,因为返回的数据存储在集合中,在键0的新数组。
问题:
如何直接... collection.get('key1')//now returns undefined... because it is
。
我知道我可以将对象暴露给集合成功函数some_other_var = data.toJSON()[0]
中的全局范围并直接访问some_other_var
属性,但这不是我正在寻找的内容;
答案 0 :(得分:0)
要使用 Backbone.Collection 中的 get()功能,您需要知道所需的型号ID或cid。
例如,假设来自服务器的数据如下:
[{
id: '123',
name: 'Alex'
}, {
id: '456',
name: 'Jhon'
}]
在这种情况下,你可以这样做:
this.collection.get('123').get('name') // Return "Alex"
请记住,集合只是一组模型,所以在幕后做collection.get()你得到一个模型
提示:如果您的服务器数据中没有任何ID,则始终可以选择使用下划线方法:
答案 1 :(得分:0)
您似乎正在尝试将属性归因于集合,但集合仅仅是一组模型。在整个集合中拥有不变的其他数据表明它应该包含在另一个模型中,这在此处进行了演示:Persisting & loading metadata in a backbone.js collection