如何使用itemController访问#each范围内的外部属性

时间:2013-09-08 20:36:39

标签: ember.js

我有一些代码如下。

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}}&nbsp;{{user.name}}</p>' +
  '{{/each}}'
);

此代码显示这些内容。

good morning John
good morning Taro

但我想要显示如下。

hello John
hello Taro

我确认删除了itemController选项显示在上面。 但我想出于某种原因使用itemController选项。

如何使用itemController访问#each范围内的UsersController问候属性?

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。

https://github.com/emberjs/ember.js/pull/2614

使用parentController实现我的目标。

Em.TEMPLATES['users'] = Em.Handlebars.compile(
  '{{#each user in controller itemController="user"}}' +
     '<p>{{parentController.greeting}}&nbsp;{{user.name}}</p>' +
  '{{/each}}'
);