【发布时间】:2012-04-08 05:14:51
【问题描述】:
采用以下模型:
MyModel= Backbone.Model.extend({
defaults : {
myNestedModel:undefined,
},
initialize: function() {
this.set({myNestedModel: new MyNestedModel());
}
});
它有一个名为“myNestedModel”的属性,其定义如下:
MyNestedModel= Backbone.Model.extend({
defaults : {
myModel:undefined,
}
});
它也有一个属性名称“myModel”。现在,如果我创建 MyModel 的一个实例:
aModel = new MyModel();
嵌套模型将在 MyModel 的初始化方法中设置。然后我在两步过程中使用 JSON.stringify:
// Use Backbone.js framework to get an object that we can use JSON.stringfy on
var modelAsJson = aModel.toJSON();
// Now actually do stringify
var modelAsJsonString = JSON.stringify(modelAsJson);
这很好用,我得到了 MyModel 的 JSON 表示形式,它是 MyNestedModel 的属性。当我使用默认值时会出现问题,例如:
MyModel= Backbone.Model.extend({
defaults : {
new MyNestedModel(),
}
});
这会导致 JSON.stringify 出现问题,因为它不支持循环引用。我假设正在创建循环引用,因为 MyModel 的所有实例共享同一个 MyNestedModel 实例。而 initialize 方法为每个实例创建一个新的嵌套模型。
问题:
- 我对@987654326@ 的理解是 问题正确吗?
- From a question I posted recently我得到了 印象我应该为所有属性使用默认值。如果是这样 在这种情况下,我应该如何在呈现的场景中使用默认值 在这个帖子/问题中?
- 谁能澄清
defaults:{}的用法 关于值何时应用,何时被覆盖和 实例是否共享相同的默认“实例”?
【问题讨论】:
标签: backbone.js