【问题标题】:Backbone Collection get property骨干集合获取属性
【发布时间】:2014-11-05 03:25:55
【问题描述】:

得到一个返回 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 属性,但这不是我想要的;

【问题讨论】:

  • 你能创建一个小提琴来演示这个问题吗

标签: backbone.js


【解决方案1】:

为了使用 Backbone.Collection 中的 get() 函数,您需要知道想要的模型 id 或 cid。

例如,假设您来自服务器的数据如下:

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

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

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

请记住,collection 只是一组模型,所以在幕后通过执行 collection.get() 你得到一个模型

提示:如果您的服务器数据中没有任何类型的 id,则始终可以选择使用下划线方法:

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

【讨论】:

    【解决方案2】:

    您似乎试图将属性赋予集合,但集合只是一组模型。在整个集合中保持不变的附加数据表明它应该被包装在另一个模型中,这在此处进行了演示:Persisting & loading metadata in a backbone.js collection

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-13
      • 1970-01-01
      • 2013-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-02
      • 1970-01-01
      相关资源
      最近更新 更多