两周前,我发布了一个我认为与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}}总是为空?
由于
PJ
答案 0 :(得分:1)
您不必使用needs
API,只需在您的子模板中写{{parent.name}}
而不是{{controllers.parent.name}}
,然后从{{needs: 'parent'
行删除App.ChildController
行1}}。
您使用needs
API引用单例控制器,而itemController
不是单例。