使用多个命名出口和Emberjs中没有内容的包装器视图

时间:2012-12-09 17:00:52

标签: ember.js

我正在尝试使用Ember.js的多个命名插座。我的方法是否正确?

标记:

<script type="text/x-handlebars" data-template-name="application">
    <div id="mainArea">
        {{outlet main_area}}
    </div>
</script>

<script type="text/x-handlebars" data-template-name="home">
    <ul id="sections">
        {{outlet sections}}
    </ul>
    <ul id="categories">
        {{outlet categories}}
    </ul>
</script>

<script type="text/x-handlebars" data-template-name="sections">
    {{#each section in controller}}
        <li><img {{bindAttr src="section.image"}}></li>
    {{/each}}
</script>

<script type="text/x-handlebars" data-template-name="categories">
    {{#each category in controller}}
        <img {{bindAttr src="category.image"}}>
    {{/each}}
</script>​

JS代码:

在这里,我将各种控制器的内容设置为从服务器抓取的数据,并将插座与其对应的视图连接起来。由于HomeController没有内容,因此将其内容设置为空对象 - 这样可以解决此错误消息:

  

未捕获错误:断言失败:无法委托集合('类别'   )对象的'content'属性   代理:其“内容”未定义。

App.Router = Ember.Router.extend({
    enableLogging: false,
    root: Ember.Route.extend({
    index: Ember.Route.extend({
        route: '/',

        connectOutlets: function(router){
            router.get('sectionsController').set('content',App.Section.find());
            router.get('categoriesController').set('content',  App.Category.find());
            router.get('applicationController').connectOutlet('main_area', 'home');
            router.get('homeController').connectOutlet('home', {});
            router.get('homeController').connectOutlet('categories', 'categories');
            router.get('homeController').connectOutlet('sections', 'sections');
            }
        })
    })
});

1 个答案:

答案 0 :(得分:5)

如果有任何帮助,我收到此错误是因为我连接的是Ember.ObjectController而不是Ember.Controller。