2013-03-27 12 views
11

Chciałbym zainicjować listę wszystkich użytkowników w aplikacji ApplicationController, a następnie wyświetlić je w menu rozwijanym w innym widoku. Jak uzyskać dostęp do ApplicationController z różnych widoków?Uzyskiwanie dostępu do aplikacji Ember ApplicationController z innego widoku

Oto odpowiedni kod:

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> 

Odpowiedz

19

Określ needs kontroler Państwa zdanie jest

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

w widoku można następnie uzyskać dostęp do kontrolera aplikacji w następujący sposób

controllers.application 

w twojej przykład

<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

szalony, że nie pojawił się, kiedy stosowane '{{}}' debugger, czyli '' null' this.controllers' powrócił . Ale teraz działa! –

+0

Dzieje się tak dlatego, że '' this'' w kontekście szablonu jest równoważne '' kontrolerowi''. które można udowodnić przez drukowanie konstruktorów, takich jak: '' '' {{this.constructor}} // App.ApplicationController {{controller.constructor}} // App.ApplicationController: ember''''' –

2

Możesz zajrzeć do sterownika poprzez pojemnika

this.container.lookup('controller:application') 
Powiązane problemy