1

两周前,我发布了一个我认为与 RC2 中更新的 {{render}} 相关的问题: EmberJS:在 RC2 中,当多次调用 {{render}} 时,如何为控制器使用“需求”?

现在,我认为它要么比这更广泛,要么我误解了如何使用“需求”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

4

1 回答 1

1

您不必为此使用needsAPI,只需编写{{parent.name}}而不是{{controllers.parent.name}}在您的子模板中,然后needs: 'parent'App.ChildController.

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

于 2013-04-09T14:01:27.280 回答