backbone:default属性和options hash中定义的属性之间的区别

时间:2011-06-27 09:05:18

标签: backbone.js

请说,在默认值上声明属性(如名称:'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)
    })

1 个答案:

答案 0 :(得分:2)

当您引用name属性时,您需要说出类似this.get('name')的内容,因为此方法会导航到存储属性的属性哈希。

defaults hash用于为模型中的默认属性hash设定种子。如果在创建新模型实例时未传入属性,则此选项非常有用。或者,如果某些值具有默认值,并且您不想在每次执行创建时都传递这些值。

要更改属性,请使用set方法。要更改名称,您必须执行以下操作:

this.set({name: 'some new name'});

this.set({name: 'some new name'}, {silent: true});

前一个调用将运行验证,后一个调用将绕过验证。