将一个属性传递给同一Backbone模型上的另一个属性

时间:2012-08-30 10:56:52

标签: backbone.js

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

是否可以为DisplayTotal设置默认值?

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

如果可能,只要设置了Total属性,它就应该将其值设置为DisplayTotal。

1 个答案:

答案 0 :(得分:1)

有些事情违背了这种做法。

P.1。 defaults在类定义时间

中解释

所以this不应该是您所期望的,可能this可能是window或类似的东西。

P.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。 / p>