2016-06-03 5 views
0

Können Sie mir bitte helfen? Ich möchte den Namen des Controllers festlegen, der im Bereich eines anderen Controllers enthalten ist.Controller-Name aus dem Bereich eines anderen Controllers

JS-Datei:

.controller('PageCtrl', [ 
    '$http', 
    '$scope', 
    '$routeParams', 
    '$location', 
    function($http, $scope, $routeParams, $location){ 

    switch($routeParams.page) { 
     case 'companies': 
     $scope.CurrentPageCtrl = 'CompaniesCtrl'; 
     break; 
     default: 

     break; 
    } 

    }]) 

.directive('myPagecontent', function() { 
    return { 
    template: '<ng-controller ng-controller = "{{CurrentPageCtrl}}"></ng-controller>' 
    }; 
}) 

HTML-Datei:

<ng-controller ng-controller = "PageCtrl"> 
    <my-pagecontent></my-pagecontent> 
</ng-controller> 

Und ich bekomme Fehler:

angular.js:13642 Error: [ng:areq] Argument '{{CurrentPageCtrl}}' is not a function, got undefined 
+0

Hat dies für Sie funktioniert? – tasseKATT

Antwort

0

Das seit ng-controller in diesem Fall ein bisschen schwierig sein kann, erwartet einen Ausdruck Dies führt zu einer Controller-Konstruktorfunktion, nicht zu einer Zeichenfolge, die den Controllernamen enthält .

Eine Möglichkeit, es zu lösen, indem Sie die folgenden ist:

app.controller('PageCtrl', [ 
    '$http', 
    '$scope', 
    '$location', 
    function($http, $scope, $location) { 

    $scope.CurrentPageCtrl = Controller1; 
    } 
]); 

function Controller1($scope) { 

    console.log('Controller1'); 
} 

app.controller('Controller1', Controller1); 

function Controller2($scope) { 

    console.log('Controller2'); 
} 

app.controller('Controller2', Controller2); 

app.directive('myPagecontent', function() { 
    return { 
    template: '<ng-controller ng-controller="CurrentPageCtrl"></ng-controller>' 
    }; 
}); 

Demo:http://plnkr.co/edit/s3yy2fdF5OgBjPcKWikw?p=preview

Eine alternative Lösung ist eine Richtlinie, die sonst vor läuft alles zu schaffen, die mit einer variablen nimmt Der Name des Controllers fügt ng-controller mit dem richtigen Wert hinzu und entfernt sich dann selbst.

Verwandte Themen