0

我有一个名为 Summary 的 Backbone 模型,它具有 Total 和 DisplayTotal 属性。我想做的只是复制 Total 的值并将其传递给 DisplayTotal。

也可以为 DisplayTotal 设置默认值吗?

defaults:{
    "DisplayTotal" : this.Total,
}

如果可能,一旦设置了 Total 属性,它也应该将其值设置为 DisplayTotal。

4

1 回答 1

1

有几件事反对这种方法。

第 1 页。defaults在类定义时间解释

所以this不应该是你所期望的,可能this会是window这样的。

第 2 页。通过Model.get()函数访问主干属性

所以你的例子是不正确的,它应该是这样的:

defaults:{
  "DisplayTotal" : this.get( "Total" ),
}

但是点P.1。仍然使这不起作用。

您还有一个实现您想要的方法的列表:

S.1。初始化DisplayTotal_Model.initialize()

initialize: function(){
  this.set( "DisplayTotal", this.get( "Total" ) );
}

S.2。延迟DisplayTotal初始化到运行时间

defaults:{
  "DisplayTotal" : function() { return this.get( "Total" ) }
}

非常危险的解决方案,您可能会遇到上下文问题this

S.3。DisplayTotal随时更新Total更新

initialize: function(){
  this.on( "change:Total", this.setDisplayTotal, this );
},

setDisplayTotal: function(){
  this.set( "DisplayTotal", this.get( "Total" ) );
}

但我担心你应该把这个和S.1 结合起来。由于我不认为该事件change是在第一组属性中触发的。

于 2012-08-30T11:17:16.600 回答