我有一个名为Summary的Backbone模型,它具有Total和DisplayTotal属性。我想做的只是复制Total的值并将其传递给DisplayTotal。
是否可以为DisplayTotal设置默认值?
defaults:{
"DisplayTotal" : this.Total,
}
如果可能,只要设置了Total属性,它就应该将其值设置为DisplayTotal。
答案 0 :(得分:1)
有些事情违背了这种做法。
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
。 / p>