我无法从Backbone.js模型中获取所有属性

时间:2012-09-04 17:03:29

标签: backbone.js

这里我创建一个带ID的新Divider,获取Divider,并显示所有属性和单个属性:

var divider = new Divider({id: "A"});
divider.fetch();
console.info(divider.attributes);
console.info(divider.get("title"));

console.info(divider.attributes)的输出将attributes.title显示为具有四个字符串的数组;然而; console.info(divider.get("title"))显示为null。任何人都可以认为为什么它会回来为null?我能得到的唯一属性是“id”。此外,console.info(divider.attributes.title)也显示为空。

这是我的Divider模型:

Divider = Backbone.Model.extend({
  defaults: {
    "id": null,
    "title": null,
    "description": null
  }
}

如果我能提供更多信息,请告诉我。谢谢!

2 个答案:

答案 0 :(得分:2)

Backbone.js提取是异步的,因此如果您依赖于要通过fetch填充的属性,则需要确保在提取完成后获取属性。这是一个例子:

var Divider = new Divider({id: "A"});
divider.fetch({success: function() {
  console.info(divider.get("title");
}});

但是,我仍然不确定为什么console.info(divider.attributes)显示带有数据的attributes.title,console.info(divider.attributes.title)显示为null。

参考:Backbone.js fetch problem (can't refresh data immediately)

答案 1 :(得分:1)

很高兴您发现了异步问题。我遇到了和你一样的问题,并且发现在返回数据时,你的模型的属性会在控制台中更新。因此,在您查看控制台时,fetch方法已完成,您的模型已更新。