2014-02-16 71 views
1

我有一个骨干模型变量,称为公司与对象数组类型。通过将它的控制台我得到这个:如何从对象数组中获取属性?

该对象加载与提取功能:

require(["collections/Companies"], 
    function(Companies) { 
    var companies = new Companies(); 
    companies.fetch(); 
    console.log(companies[0].get("name")); 

}); 

companies

companies.js:

define([ 
    'models/Company' 
], function(CompanyModel) { 
    'use strict'; 

    var CompanyCollection = Backbone.Collection.extend({ 
     model: CompanyModel, 
     url: 'scripts/data/companies.json' 
    }); 

    return CompanyCollection; 
}); 

company.js:

define([], function() { 
    'use strict'; 

    var CompanyModel = Backbone.Model.extend({ 
     defaults: { 
      id: '', 
      name: '', 
      description: '' 
     } 
    }); 

    return CompanyModel; 
}); 

我试图通过根据tutorialsconsole.log(companies[0].get("name"));)得到的属性没有运气。

获取属性的正确语法是什么?

在此先感谢

+0

'companies [0] .attributes.name'或'companies [0] .attributes [“name”]'访问它就像它在屏幕截图中显示的样子! :) – MackieeE

+0

两个公司[0] .attributes.name或公司[0] .attributes [“名称”]引发TypeError:公司[0]在日志中未定义。 – xanyi

+0

我想我们在这里错过了一些东西,就像vanilla JavaScript一样,你肯定会如何访问DOMNode属性。 – MackieeE

回答

2

从集合,您可以使用骨干收集方法得到的模型 - collection.at(INDEX);

示例代码:

var collection = new Backbone.Collection(); 
collection.add({ id: 1, name: "S"}); 
collection.add({ id: 2, name: "F"}); 

console.log(collection.at(0).attributes); // { id: 1, name: "S"} 

var model = collection.at(0); 

// get attributes from model 

console.log(model.get("name")); // "S" 

您可以demo

发挥从收集利用得到的模型:collection.models(你会得到的模型阵列)

1

由于name里面attributes一个属性,它是一个对象,你可以使用:

console.log(companies[0].attributes.name); 
+0

两个公司[0] .attributes.name或公司[0] .attributes [“name”]引发TypeError:公司[0]在日志中未定义。 – xanyi

+0

@xanyi你的代码里有什么'公司[0]'? – Felix

+0

你如何初始化你的模型?你能发布你的代码吗? – Felix

0

要打印的对象是骨干集。您需要使用collection.models阵列访问模型。

var name = companies.models[0].get("name"); 

按文档,你应该使用访问给定模型ID或使用collection.at方法给出指数collection.get方法模型。

所以,你可以访问你的公司对象:

var company = companies.get(1000001); 
var name = company.get("name"); 

文档: http://backbonejs.org/#Collection-models

+0

TypeError:公司未定义,其编码完全相同。 – xanyi

0

刚刚从第二张图片这应该工作:

require(["collections/Companies"], 
    function(Companies) { 
    var companies = new Companies(); 
    companies.fetch(); 
    for (var idx in companies){ 
     console.log(companies[idx].attributes.name); 
    } 
}); 

有没有companies[0]companies[1000001]companies[1000002]

+0

我明白,索引是1000001和1000002,但公司[任何]仍未定义。 – xanyi

相关问题