以下是使用get
和set
:
Person = Backbone.Model.extend({
defaults: {
name: 'Fetus',
age: 0,
children: []
},
initialize: function(){
alert("Welcome to this world");
},
adopt: function( newChildsName ){
var children_array = this.get("children");
children_array.push( newChlidsName );
this.set({ children: children_array });
}
});
var person = new Person({
name: "Thomas",
age: 67,
children: ['Ryan']
});
var age = person.get("age");
var name = person.get("name");
var children = person.get("children");
person.set({ age: 67});
而不是:person.age="age";
?答案 0 :(得分:4)
person.set({ age: 67});
)而不是设置属性(person.age="age";
)允许Backbone在幕后执行更多操作,而不仅仅是更改age
的值。例如,它会更新您视图中的内容。答案 1 :(得分:2)
我们添加了Backbone模型getter和setter,它们可以完全满足您的需求。见this code。现代浏览器支持它,但旧版本是不可能的。
原因是设置属性不会触发事件,而通过函数设置值可以触发Backbone需要正常运行的事件。