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每次访问页面时,防止 ember 为每个列表项创建新项的解决方案是什么?

4

1 回答 1

0

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

你想保留什么样的数据?showDetails国旗?每当您退出/进入路线时,ContactControllers它们都会被创建和销毁,而且我不知道要保留它们。

保留它的ContactsController属性是因为它是一个单例控制器,因为你有一个ContactsRoute.

于 2013-06-04T02:12:13.173 回答