EmberJS:如何使用控制器的“需求”API?

时间:2013-04-09 13:27:49

标签: ember.js

两周前,我发布了一个我认为与RC2中更新的{{render}}相关的问题: EmberJS: in RC2, how to use "needs" for a controller when {{render}} is called multiple times?

现在,我认为它要么比这更广泛,要么我误解了如何使用“需求”API,因为在使用旧的'itemController'时也会发生这种情况。

请考虑以下事项:

App.Parent = Ember.Object.extend({
    name: null,
    children: null, // An Ember array of Child objects
});

App.Child = Ember.Object.extend({
    name: null,
});

App.ParentController = Ember.ObjectController.extend({
});

App.ChildController = Ember.ObjectController.extend({
    needs: 'parent',
});

我的模板是这样的:

<script type="text/x-handlebars" data-template-name="application">
    {{#each parent in App.parents itemController='Parent'}}
        {{partial 'parent'}}
    {{/each}}
</script>

<script type="text/x-handlebars" data-template-name="_parent">
    In parent: {{controller}}<br>
    Name: {{name}}<br>
    <br>
    {{#each child in children itemController='Child'}}
        {{ partial 'child' }}
    {{/each}}
</script>

<script type="text/x-handlebars" data-template-name="_child">
    Child name: {{name}}<br>
    Parent Name: {{controllers.parent.name}}<br>
    <br>
</script>

为什么{{controllers.parent.name}}总是为空?

http://jsfiddle.net/8V9xQ/5/

由于

PJ

1 个答案:

答案 0 :(得分:1)

您不必使用needs API,只需在您的子模板中写{{parent.name}}而不是{{controllers.parent.name}},然后从{{needs: 'parent'行删除App.ChildController行1}}。

您使用needs API引用单例控制器,而itemController不是单例。