2

コントローラーのプロパティ値を覚える最良の方法は何ですか? ここを見てください:

jsbin の例

要素が展開されたかどうかを覚えておきたいのですが、現在のセッションの間だけ、この値をデータストアに保存したくありません。問題は、次の手順を実行することです。

  • 「アーティスト」を展開
  • 「アルバム」を展開
  • 「アーティスト」を折りたたむ
  • 再び拡大「アーティスト」

「アルバム」も折りたためる!「アルバム」からの値isExpandedが失われました。ember は毎回コントローラーを再作成するようです。の値を覚えておくには、どれが良い解決策でしょisExpandedうか?

4

2 に答える 2

1

コントローラーの有効期間を超えて値を永続化したい場合は、それを存続させたい限りスコープ内にとどまるコントローラーに保存する必要があります(完全な意図が何であるかはわかりませんが、実際には、アプリケーションコントローラーに保存したいページ値の存続期間です)

http://jsbin.com/osoFiZi/5/edit

App.AlbumController = Ember.ObjectController.extend({
  needs: ['artist'],
  actions: {
    toggleExpanded: function() {              
      this.toggleProperty('controllers.artist.isAlbumsExpanded');              
    }
  }
});
于 2013-11-01T20:30:39.093 に答える
0

モデルにプロパティを追加できます

App.Artist = DS.Model.extend({
  isExpanded: false, // this property will not be included into PUT request when you will save record
  name: DS.attr('string'),
  albums: DS.hasMany('album', {async: true})
});

コントローラーで切り替えます

actions: {
  toggleExpanded: function() {
    this.toggleProperty('model.isExpanded');
  }
}

http://jsbin.com/OtEBoNO/2/edit

于 2013-11-01T20:54:44.700 に答える