333 Stimmen

AngularJS: Wie kann ich Variablen zwischen Controllern übergeben?

Ich habe zwei Angular-Controller:

function Ctrl1($scope) {
    $scope.prop1 = "First";
}

function Ctrl2($scope) {
    $scope.prop2 = "Second";
    $scope.both = Ctrl1.prop1 + $scope.prop2; //This is what I would like to do ideally
}

Ich kann nicht verwenden Ctrl1 innerhalb Ctrl2 weil sie undefiniert ist. Wenn ich jedoch versuche, es wie folgt zu übergeben

function Ctrl2($scope, Ctrl1) {
    $scope.prop2 = "Second";
    $scope.both = Ctrl1.prop1 + $scope.prop2; //This is what I would like to do ideally
}

Ich erhalte eine Fehlermeldung. Weiß jemand, wie man das macht?

Tun

Ctrl2.prototype = new Ctrl1();

Scheitert ebenfalls.

HINWEIS: Diese Steuerungen sind nicht ineinander verschachtelt.

-1voto

williamjxj Punkte 1

Neben $rootScope und Services gibt es eine saubere und einfache alternative Lösung, Angular zu erweitern, um die gemeinsamen Daten hinzuzufügen:

in den Steuergeräten:

angular.sharedProperties = angular.sharedProperties 
    || angular.extend(the-properties-objects);

Diese Eigenschaften gehören zum "angular"-Objekt, das von den Bereichen getrennt ist, und können in Bereichen und Diensten gemeinsam genutzt werden.

1 Vorteil davon ist, dass Sie das Objekt nicht injizieren müssen: Sie sind überall sofort nach Ihrer Definition zugänglich!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X