backbone.js更新模型默认值

for*_*ice 3 javascript backbone.js

如何更新模型的默认对象?

例如,假设我在下面建模了Box对象.它将默认的"Color"属性设置为"#FFF".

一旦用户开始与服务器交互,服务器在某些时候会传回新的默认颜色#000.我希望从该点开始实例化的所有新框默认为#000的颜色属性.

顺便说一下,假设我执行此更新,因为默认值是通过引用传递的,所有现有的框也将更新其默认值.它是否正确?

var Box = Backbone.Model.extend({
    defaults: {
        "Colour"  : "#FFF"
    }
});
Run Code Online (Sandbox Code Playgroud)

c3r*_*rin 10

使用可以轻松更改默认值

Box.prototype.defaults.Colour = '#000'
Run Code Online (Sandbox Code Playgroud)

当你改变它时,已经创建的框将在其原型链的深处有一个新值

myBox.__proto__.constructor.prototype.defaults.Colour === '#000'
Run Code Online (Sandbox Code Playgroud)

但这并不重要,它不会改变myBox.get('Colour')由于默认值被复制到myBox.attributes实例化时的值.要更改现有的盒子,你必须使用myBox.set({'Colour': '#000'})myBox.attributes.Colour = '#000'.

(我希望我正确地解释你的问题)