2016-01-13 12 views
6

Chcę przekazać niektóre dane do $ mdDialog. W rzeczywistości mam kontroler holowania w osobnym pliku. tutaj jest mój kod kontrolny

function openDialog(id) { 
     $mdDialog.show({ 
      locals:{ 
       profileId: id 
      }, 
      controller: ['$scope', 'profileId', function($scope, profileId) { 
       var self = this; 
       self.profileId= profileId; 
      }], 
      controllerAs: 'profileCtrl', 
      templateUrl: 'view/profile.html', 
      parent: angular.element(document.body), 
      clickOutsideToClose:true 

     }) 
    } 

Chcę tp przekazać profileId do profiluController i wyświetlić dane profilu. W profilu kontroler i uzyskać dane jak to

function profileController($scope,..., profileId){ 

} 

ale ten błąd apear w konsoli

Error: [$injector:unpr] Unknown provider: profileIdProvider <- profileId<- ProfileController 

co to za błąd i jak go naprawić?

Odpowiedz

6

I dodaje ng-controller="ProfileController as profileController" w profilu szablonu i to było spowodowane błąd. Po usunięciu mój problem został rozwiązany.

0

myślę, że trzeba to zrobić:

controller: ['$scope', function($scope) { 
       var self = this; 
       self.profileId= $scope.profileId; 
      }] 

Twój ProfileID jest w zasięgu.

Można użyć mieszkańców do przekazywania danych: exemple z oficjalnej strony:

function showDialog($event) { 
     var parentEl = angular.element(document.body); 
     $mdDialog.show({ 
     parent: parentEl, 
     targetEvent: $event, 
     template: 
      '<md-dialog aria-label="List dialog">' + 
      ' <md-dialog-content>'+ 
      ' <md-list>'+ 
      '  <md-list-item ng-repeat="item in items">'+ 
      '  <p>Number {{item}}</p>' + 
      '  '+ 
      ' </md-list-item></md-list>'+ 
      ' </md-dialog-content>' + 
      ' <md-dialog-actions>' + 
      ' <md-button ng-click="closeDialog()" class="md-primary">' + 
      '  Close Dialog' + 
      ' </md-button>' + 
      ' </md-dialog-actions>' + 
      '</md-dialog>', 
     locals: { 
      items: $scope.items 
     }, 
     controller: DialogController 
     }); 

Gdzie pozycji to dane przekazane do dialogowym

+0

Niezupełnie odpowiedzieć na pytanie, chcę zachować kod nie oddziela dobre umieścić cały kod w 1 stronę, trudne do naśladowania i konserwacji. –

0

Wybierz szybką trasę!

openDialog = (items) => 
    $mdDialog.show({ 
     templateUrl: 'view/profile.html', 
     controller: $scope => $scope.items = items 
    }) 

$scope.items mogą być teraz używane w szablonie dialogowym ☺

Powiązane problemy