Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript backbone.js更新模型默认值_Javascript_Backbone.js - Fatal编程技术网

Javascript backbone.js更新模型默认值

Javascript backbone.js更新模型默认值,javascript,backbone.js,Javascript,Backbone.js,如何更新模型的默认对象 例如,假设我在下面建模了Box对象。它的默认“颜色”属性设置为“#FFF” 一旦用户开始与服务器交互,服务器会在某个时候传回一个新的默认颜色#000。我希望从该点开始实例化的所有新框都默认为颜色属性#000 另一方面,假设我执行此更新,因为默认值是通过引用传递的,所以所有现有框也将更新其默认值。这是正确的吗 var-Box=Backbone.Model.extend({ 默认值:{ “颜色”:“FFF” } }); 看起来您的颜色属性并不是真正保存的模型状态。将其作为类属

如何更新模型的默认对象

例如,假设我在下面建模了Box对象。它的默认“颜色”属性设置为“#FFF”

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

另一方面,假设我执行此更新,因为默认值是通过引用传递的,所以所有现有框也将更新其默认值。这是正确的吗

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技术的,但是关于实例与类属性的讨论也很有用。