Javascript backbone.js更新模型默认值
如何更新模型的默认对象 例如,假设我在下面建模了Box对象。它的默认“颜色”属性设置为“#FFF” 一旦用户开始与服务器交互,服务器会在某个时候传回一个新的默认颜色#000。我希望从该点开始实例化的所有新框都默认为颜色属性#000 另一方面,假设我执行此更新,因为默认值是通过引用传递的,所以所有现有框也将更新其默认值。这是正确的吗Javascript backbone.js更新模型默认值,javascript,backbone.js,Javascript,Backbone.js,如何更新模型的默认对象 例如,假设我在下面建模了Box对象。它的默认“颜色”属性设置为“#FFF” 一旦用户开始与服务器交互,服务器会在某个时候传回一个新的默认颜色#000。我希望从该点开始实例化的所有新框都默认为颜色属性#000 另一方面,假设我执行此更新,因为默认值是通过引用传递的,所以所有现有框也将更新其默认值。这是正确的吗 var-Box=Backbone.Model.extend({ 默认值:{ “颜色”:“FFF” } }); 看起来您的颜色属性并不是真正保存的模型状态。将其作为类属
var-Box=Backbone.Model.extend({
默认值:{
“颜色”:“FFF”
}
});
看起来您的颜色属性并不是真正保存的模型状态。将其作为类属性可能更合适。所以你可以这样做:
var Box = Backbone.Model.extend({
// Instance properties here.
}, {
colour: '#FFF'
});
然后,如果需要使用此属性,请将其引用为:
Box.colour
如果您需要更改,只需执行以下操作:
Box.colour = #000;
这种方法可能适用于您的应用程序,也可能不适用于您的应用程序,因为它需要成为实例属性可能是有原因的。但它似乎更像是类的属性而不是类的实例。使用
Box.prototype.defaults.Colour = '#000'
当你改变这一点时,已经创建的盒子将在原型链的深处产生新的价值
myBox.__proto__.constructor.prototype.defaults.Colour === '#000'
但这无关紧要,也不会改变来自myBox.get('color')
的值,因为默认值在实例化时会复制到myBox.attributes
。要更改现有框,您必须使用myBox.set({'color':'#000'})
或myBox.attributes.color='#000'
(我希望我正确地解释了你的问题)谢谢@Bill我是专门寻找Box.prototype.defaults.\u attribute\u技术的,但是关于实例与类属性的讨论也很有用。