2014-11-05 87 views
0

有一个服务器返回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

你能创建一个演示问题的小提琴吗? – 2014-11-06 06:29:07

回答

0

为了你需要知道的型号ID或CID想用的get()函数Backbone.Collection。

例如,让我们说你的数据从服务器端传来的是像如下:

[{ 
id: '123', 
name: 'Alex' 
}, { 
id: '456', 
name: 'Jhon' 
}] 

在这种情况下,你可以这样做:

this.collection.get('123').get('name') // Return "Alex" 

请记住,集合只是一组模型,所以在后台通过做collection.get()你得到一个模型

提示:如果你的服务器数据中没有任何类型的id,总是有使用下面的选项核心方法:

  • 找到
  • 过滤
  • 一些
  • 包含