我正在研究骨干,我正在尝试初始化一个对象,但是我从控制台得到了一个空对象。我做错了什么?
Month = Backbone.Model.extend({
month:"a",
values:[
{label:"Total", value:0},
{label:"Expenses", value:0},
{label:"Profit", value:0}
]
});
var x = new Month();
console.log(x.toJSON())
答案 0 :(得分:3)
Backbone.Model
是单个对象,您无法使用数组初始化它。
但你可以使用这样的单个对象初始化它:
Month = Backbone.Model.extend({
defaults: {label:"Total", month:"a", value:0}
});
var x = new Month();
console.log(x.toJSON())
答案 1 :(得分:1)
您要做的是设置该模型的默认值。
Month = Backbone.Model.extend({
defaults:{
month:"a",
values:[
{ total: { label:"Total", value:0 }},
{ expenses: { label:"Expenses", value:0 }},
{ profit: { label:"Profit", value:0 }},
]
}
});
这将确保在创建Month
对象时,它将在其属性中包含您在defaults对象中定义的那些属性。 (我已经改变了一些数据,但我认为你从我的例子中得到了想法)。
您可以在文档中阅读更多内容:http://backbonejs.org/#Model-defaults
默认值哈希(或函数)可用于指定模型的默认属性。在创建模型实例时,任何未指定的属性都将设置为其默认值。
答案 2 :(得分:0)
当创建模型的实例时,您可以传递初始值 属性的值,将在模型上设置。如果你 定义一个
initialize
函数,它将在模型时调用 创建
defaults
哈希(或函数)可用于指定默认值 模型的属性。在创建模型的实例时,任何 未指定的属性将设置为其默认值。
答案 3 :(得分:0)
var Month = Backbone.Model.extend({
// you put your Model's methods here or override existing Backbone Model methods here
});
var x = new Month({
// you put the data of the model here
month:"a",
values:[
{label:"Total", value:0},
{label:"Expenses", value:0},
{label:"Profit", value:0}
]
});
console.log(x.toJSON())
<强>更新强>
这里的一个重点是值数组将在此模型的所有实例之间共享,因为它在文件执行时被初始化并被value
属性引用。因此,如果您有2个模型并且说更改模型1中数组中的Expenses
值,则模型2中的Expenses
也将更新。像https://github.com/powmedia/backbone-deep-model这样的东西可以帮助处理深层嵌套的数据。