如何将控制器's content属性设置为模型数组,而不需要相应的路由

How to set a controller's content property to an array of models without a corresponding route?

本文关键字:数组 模型 不需要 路由 设置 控制器 属性 content      更新时间:2023-09-26

我在其中一个模板中使用{{render}} handlebars帮助器来(尝试)渲染同一页面上另一个路由的模板。例如:

<script type="text/x-handlebars" data-template-name="index">
{{#each model}}
  {{name}}<br />
{{/each}}
{{render "people"}}
</script>
<script type="text/x-handlebars" data-template-name="people">
{{#each controller}}
  {{name}}<br />
{{/each}}
</script>

在我的人员控制器中,我像往常一样设置模型:

App.PeopleRoute = Ember.Route.extend({
  model: function() {
    return App.People.find();
  }
});

如果我直接访问我的人员路由(/people),我将得到一个人员列表。在我的主模板中,人物模板被渲染到另一个模板中,渲染助手不调用PeopleRoute,因此模型从未设置(据我所知)。

是否有一种方法可以让我将PeopleController上的content属性设置为people对象列表?

我不能得到这个工作的任何变化:

App.PeopleController = Ember.ArrayController.extend({
  content: function() {
    return App.People.find();
  }
});

渲染助手不做任何转换,因此模型钩子不会被调用。它只是在当前上下文中用同名控制器渲染模板…你可以将一个可选的模型传递给渲染助手,它会绑定到同名控制器的内容…安贝API

  <script type="text/x-handlebars" data-template-name="index">
   {{#each model}}
    {{name}}<br />
   {{/each}}
    {{render "people" model}} 
   </script>

此处为示例小提琴