0

Total属性とDisplayTotal属性を持つSummaryという名前のバックボーンモデルがあります。私がやりたいのは、Totalの値を複製し、それをDisplayTotalに渡すことです。

DisplayTotalのデフォルトを設定することもできますか?

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

可能であれば、Total属性が設定されるとすぐに、その値もDisplayTotalに設定する必要があります。

4

1 に答える 1

1

このアプローチに反対することがいくつかあります。

P.1。defaultsクラス定義時間で解釈されます

だからthis、あなたが期待するものではないはずです、おそらくこのようなものthisになるでしょうwindow

P.2。バックボーン属性は、Model.get()関数を介してアクセスされます

したがって、あなたの例は正しくありません。次のようになります。

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

しかし、ポイントP.1。まだこれが機能しないようにしています。

あなたはまたあなたが望む欲求を達成するためのアプローチのリストを持っています:

S.1。で初期DisplayTotalModel.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 に答える