2016-05-29 7 views
3

Ich versuche, einen Controller für einen Dialog zu definieren, wie in den scharfkantigen Material Beispielen gesehen (https://plnkr.co/edit/DlhNXU)Probleme einen Controller in Angular JS zu injizieren

var TestApp = angular.module('TestApp', ['ngMaterial']); 

TestApp.controller('MainController', function MainController($scope, $mdDialog, $mdMedia, DialogController) { 
    ... 
    $mdDialog.show({ 
     controller: DialogController, 
     ... 
    }); 
    ... 
} 

Aber ich dies immer erhalten:

Error: [$injector:unpr] Unknown provider: DialogControllerProvider <- DialogController <- MainController

Antwort

0

Sie können keine Controller injizieren. So entfernen DialogController von Dependency Injection Parameter in MainController und verwenden controller: 'DialogController' für Dialog:

TestApp.controller('MainController', function MainController($scope, $mdDialog, $mdMedia) { 

    // ... 

    $scope.showImprintDialog = function(ev) { 
    var useFullScreen = ($mdMedia('sm') || $mdMedia('xs')) && $scope.customFullscreen; 
    $mdDialog.show({ 
     controller: 'DialogController', 
     templateUrl: 'impressum.html', 
     parent: angular.element(document.body), 
     targetEvent: ev, 
     clickOutsideToClose: true, 
     fullscreen: useFullScreen 
     }) 
     .then(function(answer) { 
     $scope.status = 'You said the information was "' + answer + '".'; 
     }, function() { 
     $scope.status = 'You cancelled the dialog.'; 
     }); 
    $scope.$watch(function() { 
     return $mdMedia('xs') || $mdMedia('sm'); 
    }, function(wantsFullScreen) { 
     $scope.customFullscreen = (wantsFullScreen === true); 
    }); 
    }; 

    // ... 

}); 

Demo:https://plnkr.co/edit/46YtlQbndPQ4n27uGFGQ?p=preview

+0

Aber ein anderes Problem haben, möchte die Controller in einer externen Datei setzen. – n00n

+0

Aber ich habe ein anderes Problem, möchte die Controller auslagern ... aber es kann sie nicht mehr finden ... https://plnrkr.co/edit/wPIsxH – n00n

+0

Entschuldigung, bat Beschreibung "aber es kann sie nicht mehr finden". Ich habe eine Fehlermeldung "angular.js: 13424 Fehler: [ng: Areq] Argument 'DialogController' ist keine Funktion, undefined" – n00n

Verwandte Themen