我有一个名为 Summary 的 Backbone 模型,它具有 Total 和 DisplayTotal 属性。我想做的只是复制 Total 的值并将其传递给 DisplayTotal。
也可以为 DisplayTotal 设置默认值吗?
defaults:{
"DisplayTotal" : this.Total,
}
如果可能,一旦设置了 Total 属性,它也应该将其值设置为 DisplayTotal。
我有一个名为 Summary 的 Backbone 模型,它具有 Total 和 DisplayTotal 属性。我想做的只是复制 Total 的值并将其传递给 DisplayTotal。
也可以为 DisplayTotal 设置默认值吗?
defaults:{
"DisplayTotal" : this.Total,
}
如果可能,一旦设置了 Total 属性,它也应该将其值设置为 DisplayTotal。
有几件事反对这种方法。
defaults
在类定义时间解释所以this
不应该是你所期望的,可能this
会是window
这样的。
Model.get()
函数访问主干属性所以你的例子是不正确的,它应该是这样的:
defaults:{
"DisplayTotal" : this.get( "Total" ),
}
但是点P.1。仍然使这不起作用。
您还有一个实现您想要的方法的列表:
DisplayTotal
_Model.initialize()
initialize: function(){
this.set( "DisplayTotal", this.get( "Total" ) );
}
DisplayTotal
初始化到运行时间defaults:{
"DisplayTotal" : function() { return this.get( "Total" ) }
}
非常危险的解决方案,您可能会遇到上下文问题this
。
DisplayTotal
随时更新Total
更新initialize: function(){
this.on( "change:Total", this.setDisplayTotal, this );
},
setDisplayTotal: function(){
this.set( "DisplayTotal", this.get( "Total" ) );
}
但我担心你应该把这个和S.1 结合起来。由于我不认为该事件change
是在第一组属性中触发的。