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

时间:2015-01-29 22:59:43

标签: 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
                });
            });
        });
    }
});

我没有问题以这种方式将类别模型附加到类别模板,但是我无法将排序模型附加到排序模板。返回排序模型数据 ,我无法弄清楚如何将其与排序模板相关联。是因为排序模板嵌套了两层深度吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

进入视图类别&#39;的上下文不存在变量&#39; sort&#39;, 你需要做这样的事情:

(在类别视图中,您可以使用变量&#39;类别&#39;)

&#13;
&#13;
<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>
&#13;
&#13;
&#13;

抱歉我的英文

答案 1 :(得分:0)

答案是在上下文中。

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

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