我有一个骨干模型变量,称为具有对象数组类型的公司。把它放到控制台我得到了这个:
此对象使用fetch函数加载:
require(["collections/Companies"],
function(Companies) {
var companies = new Companies();
companies.fetch();
console.log(companies[0].get("name"));
});
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;
});
我试图根据tutorials(console.log(companies[0].get("name"));
)使用get来获取属性而没有运气。
获取属性的正确语法是什么?
提前致谢
答案 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)
由于name
是attributes
内的一个属性,它是一个对象,您可以使用:
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");
答案 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]
。