我有一些代码,如下所示。
App = Ember.Application.create({ });
App.Router.map(function() { this.route('users', {path: '/'}); });
App.UsersRoute= Em.Route.extend({
model: function() {
return [{name:'John'}, {name:'Taro'}];
},
});
App.UsersController = Em.ArrayController.extend({
greeting: 'hello',
});
App.UserController = Em.ObjectController.extend({
greeting: 'good morning',
});
Em.TEMPLATES['users'] = Em.Handlebars.compile(
'{{#each user in controller itemController="user"}}' +
'<p>{{greeting}} {{user.name}}</p>' +
'{{/each}}'
);
此代码显示这些内容。
good morning John
good morning Taro
但我想像下面这样显示。
hello John
hello Taro
我确认删除项目控制器选项显示在上面。但是出于某种原因,我想使用项目控制器选项。
如何使用 itemController 访问 #each 范围内的用户控制器的问候属性?
我找到了解决方案。
https://github.com/emberjs/ember.js/pull/2614
使用父控制器实现了我的目标。
Em.TEMPLATES['users'] = Em.Handlebars.compile(
'{{#each user in controller itemController="user"}}' +
'<p>{{parentController.greeting}} {{user.name}}</p>' +
'{{/each}}'
);