从另一个视图访问Ember ApplicationController

时间:2013-03-27 15:14:58

标签: ember.js

我想在ApplicationController中初始化所有用户的列表,然后在另一个视图的下拉列表中显示它们。如何从不同的视图访问ApplicationController?

以下是相关代码:

  App.ApplicationRoute = Ember.Route.extend({
   setupController:function(controller) {
    controller.set('users', App.User.find());
    controller.set('selectedUser', null);
  }
 });

 <script type="text/x-handlebars" data-template-name="users">
   {{view Ember.Select
   contentBinding="App.ApplicationController.users"
   optionValuePath="content.id"
   optionLabelPath="content.fullName"
   selectionBinding="App.ApplicationControllerselectedUser"}}

   selected user: {{App.ApplicationController.selectedUser.fullName}}
 </script>

2 个答案:

答案 0 :(得分:19)

在视图的控制器中指定needs

App.UsersController = Ember.Controller.extend({
  needs: ['application']
});

在您的视图中,您可以按如下方式访问应用程序控制器

controllers.application

在你的例子中

<script type="text/x-handlebars" data-template-name="users">
  {{view Ember.Select
         contentBinding="controllers.application.users"
         optionValuePath="content.id"
         optionLabelPath="content.fullName"
         selectionBinding="controllers.application.selectedUser"}}

  selected user: {{controllers.application.selectedUser.fullName}}
</script>

答案 1 :(得分:2)

您可以通过容器

查找控制器
this.container.lookup('controller:application')