0

アイテムのリストを表示し、各リストを独自のコントローラーでラップする次のテンプレート設定があります。

{{#each controller itemController="contact"}}
  <div class="contact-entry">
    <div class="title" {{action toggle on="click"}}>{{title}}</div>
    {{#if showDetails}}
    <div class="details">
      <div>{{safe details}}</div>
    </div>
    {{/if}}
  </div>
{{/each}}

メイン コントローラーは ArrayController と呼ばれContentsController、各アイテムは ObjectController と呼ばれるオブジェクトにラップされますContentController。の内容はContentsController、ルートで明示的に設定されます (データを単純化しました)。

App.ContactsRoute = Em.Route.extend({
  model: function() {
   return [{'title': 'first'}, {'title': 'second'}];
  }
});

これは本当にうまくいきます。ただし、別のパスに移動してから再び戻ると、の設定は保持されContentControllerません。モデル データがリロードされ、リスト アイテムごとに ObjectController が作成されると仮定します。ちなみに、これはContentsController設定を保持する の場合には当てはまりません。

ContentControllerページにアクセスするたびに、すべてのリスト アイテムに新しいアイテムを作成することを防ぐための解決策は何ですか?

4

1 に答える 1

0

#each ブロックで使用しているため、への参照ContentControllerは本当にあると思います。ContactsControlleritemController="contact"

どのような種類のデータを永続化しようとしていますか? 旗showDetails?ルートContactControllersを出入りするたびに作成および破棄されますが、それらを保持する方法はありません。

ContactsControllerがあるために生成されたシングルトンコントローラーであるため、 はそのプロパティを保持しますContactsRoute

于 2013-06-04T02:12:13.173 に答える