2013-03-27 4 views
11

私はApplicationController内のすべてのユーザのリストを初期化し、別のビューのドロップダウンでそれらを表示したいと思います。どのようにして異なるビューからApplicationControllerにアクセスできますか?ここで別のビューからEmber 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> 

答えて

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> 
+0

クレイジー、を介してコントローラを探すことができます '{{デバッガ}}'、すなわち 'this.controllers'は' null'なのでを返さ。しかしそれは今働きます! –

+0

これはテンプレートの文脈における '' this''が '' controller''に相当するからです。 '' {{this.constructor}} // App.ApplicationController {{controller.constructor}} // App.ApplicationController:ember''''のように、コンストラクタを印刷することで証明できます。 –

2

あなたは、私が使用したときに表示されませんでしたコンテナ

this.container.lookup('controller:application') 
関連する問題