请说,在默认值上声明属性(如名称:'dflt name')和在外部默认值上声明属性(如name:'name prop')之间的区别是什么。同样在初始化函数中,当我试图改变道具值时,它没有改变(比如this.name =“Mr。”+ this.name;)。请参阅以下代码。
$(document).ready(function(){
arrModel = Backbone.Model.extend({
defaults:{
name:'dflt name'
},
name:'name prop',
initialize:function(){
this.name = "Mr."+this.name;
console.log("init", this.name) // this is printing raj not Mr.raj
}
})
m = new arrModel({
name:'raj',
std:2
});
console.log(m.attributes)
})
答案 0 :(得分:2)
当您引用name属性时,您需要说出类似this.get('name')的内容,因为此方法会导航到存储属性的属性哈希。
defaults hash用于为模型中的默认属性hash设定种子。如果在创建新模型实例时未传入属性,则此选项非常有用。或者,如果某些值具有默认值,并且您不想在每次执行创建时都传递这些值。
要更改属性,请使用set方法。要更改名称,您必须执行以下操作:
this.set({name: 'some new name'});
或
this.set({name: 'some new name'}, {silent: true});
前一个调用将运行验证,后一个调用将绕过验证。