将模型分配给 Ember.js 中的深层嵌套视图

Assigning model to deeply nested view in Ember.js

我有一个包含嵌套视图的模板。嵌套视图又具有自己的嵌套视图。这些视图都应该在相同的路由下呈现并使用它们自己的特定模型。浏览模板没有关联的模型。

模板如下所示:

<script type="text/x-handlebars" data-template-name="browse">
    {{render "category" category}}
</script>

<script type="text/x-handlebars" data-template-name="category">
    {{render "sort" sort}}
</script>

<script type="text/x-handlebars" data-template-name="sort">
    <ul>
    {{#each m in model}}
        <li>{{m.sortType}}</li>
    {{/each}}
    </ul>
</script>

我在浏览路径下返回我需要的所有模型:

App.BrowseRoute = Ember.Route.extend({
    model: function () {
        var store = this.store;
        return new Em.RSVP.Promise(function (resolve, reject) {
            new Em.RSVP.hash({
                category: store.find('category'),
                sort: store.find('sort')
            }).then(function (results) {
                resolve({
                    category: results.category,
                    sort: results.sort
                });
            });
        });
    }
});

我可以通过这种方式将类别模型附加到类别模板,但无法将排序模型附加到排序模板。返回的排序模型数据 ,我就是不知道如何将它与排序模板相关联。是因为排序模板嵌套了两层吗?

谢谢!

进入视图上下文'category'不存在变量'sort', 你需要做这样的事情:

(类别视图可以使用变量'category')

<script type="text/x-handlebars" data-template-name="browse">
  {{render "category" model}}

 </script>

<script type="text/x-handlebars" data-template-name="category">
   {{category}}
  {{render "sort" sort}}
</script>

<script type="text/x-handlebars" data-template-name="sort">
  <br/>{{model}}
  <ul>
   {{#each m in model}}
   <li>{{m.sortType}}</li>
   {{/each}}
  </ul>
</script>

对不起我的英语

答案在上下文中。

浏览视图的路由检索类别和排序模型,因此它知道它们。这就是为什么我在渲染类别模板时可以传递类别模型。但是,类别模板不知道排序模型,因此无法将其传递给排序模板,但是类别模板可以 引用其父级,因此我能够将排序模型从类别传递到引用父级的排序模板。这是解决问题的代码片段:

<script type="text/x-handlebars" data-template-name="category">
    {{render "sort" parentController.sort}}
</script>