Backbone Collection获取属性

时间:2014-11-05 03:25:55

标签: backbone.js

让服务器返回一个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属性,但这不是我正在寻找的内容;

2 个答案:

答案 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