持久对象控制器详细信息

时间:2013-06-03 20:05:13

标签: ember.js

我有以下模板设置,显示项目列表,并将每个列表包装在自己的控制器中:

{{#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}}

主控制器是一个名为ContentsController的ArrayController,每个项目都包含在一个名为ContentController的ObjectController中。 ContentsController的内容在路由中明确设置(我简化了数据):

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

这非常有效。但是,如果我导航到另一个路径然后再返回,则ContentController上的设置不会保留。发生的是模型数据被重新加载,我假设为每个列表项创建了一个ObjectController。顺便说一下,ContentsController不是这种情况,它会保留其设置。

每次访问页面时,阻止为每个列表项创建新ContentController的问题有什么解决方案?

1 个答案:

答案 0 :(得分:0)

我假设您对ContentController的引用确实是ContactsController,因为您在#each块中使用了itemController="contact"

您想要保留哪种数据? showDetails旗帜?当您退出/进入路线时,ContactControllers将被创建和销毁,而且我知道无论如何都要保留这些路线。

ContactsController保留其属性,因为它生成了一个单例控制器,因为你有一个ContactsRoute