1

私の ember アプリケーション内で、モデルのプロパティが変更される場合と変更されない場合があるイベントがあります。また、コントローラーには、モデルのプロパティとアプリケーション内の別の変数 (モデルに属していない) の両方に依存する計算されたプロパティがあります。

イベントがトリガーされたときにモデルのプロパティが変更されなくても、コントローラーの計算されたプロパティに影響を与える他のアプリケーション変数が変更されます。これらの変更をイベントのトリガーに反映させたいと思います。

同じ値が割り当てられている場合、ember はプロパティを「更新」しないことに気付きました。更新を強制する方法が見つからないようです。

現在、モデルのプロパティが変更されない場合は、値を別のものに変更してから、コントローラーの計算されたプロパティをトリガーするために元の値にリセットするチーズ修正があります。これはあまり効率的でもクリーンでもありません。これを処理する別の方法はありますか?

編集:私が行っていることを簡単に示すために...

session.other_application_var = [1, 2];

App.MyModel = Ember.Object.extend({
  model_prop: 1
});

//an instance of MyModel is assigned to the index route's model

App.IndexController = Ember.ObjectController.extend({
  comp_prop: function(){
    var sum = this.get('model.model_prop');
    session.other_application_var.forEach(function(num){
      sum += num;
    });
    return sum;
  }.property('model.model_prop)
});

基本的には、別の要素を追加するなど、session.other_application_var を変更する場合は、comp_prop を更新したいと考えています。

4

1 に答える 1

2

特別な@eachプロパティを使用して、配列の変化を観察できます。以下の変更は、「App.otherStuff.@each」が変更comp_propされたときに更新されることを意味します。model.model_prop

App = Ember.Application.create({
  otherStuff: [2,3,4]
});

App.IndexController = Ember.ObjectController.extend({
  comp_prop: function(){
    var sum = this.get('model.model_prop');
    var otherStuff = App.get('otherStuff');
    otherStuff.forEach(function(num){
      sum += num;
    });
    return sum;
  }.property('model.model_prop', 'App.otherStuff.@each')
}

完全な動作例 JSBin

于 2013-07-03T22:02:42.220 に答える