如何从对象数组中获取属性?

时间:2014-02-16 10:52:29

标签: javascript backbone.js

我有一个骨干模型变量,称为具有对象数组类型的公司。把它放到控制台我得到了这个:

此对象使用fetch函数加载:

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"));)使用get来获取属性而没有运气。

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

提前致谢

4 个答案:

答案 0 :(得分:2)

要从集合中获取模型,您可以使用Backbone集合方法 - 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 :(得分:1)

由于nameattributes内的一个属性,它是一个对象,您可以使用:

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

答案 2 :(得分:0)

您要打印的对象是Backbone Collection。您需要使用collection.models数组访问模型。

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

根据文档,您应该使用给定模型ID的collection.get方法或使用给定索引的collection.at方法来访问模型。

因此,您可以访问公司对象:

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

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

答案 3 :(得分: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]