web-dev-qa-db-fra.com

Comment partager la variable $ scope d'un contrôleur avec un autre dans AngularJS?

J'ai ceci:

app.controller('foo1', function ($scope) {
  $scope.bar = 'foo';
});
app.controller('foo2', function ($scope) {
  // want to access the $scope of foo1 here, to access bar
});

Comment pourrais-je accomplir cela?

Vous pouvez utiliser un service Angular pour partager des variables entre plusieurs contrôleurs.

angular.module('myApp', [])
.service('User', function () {
    return {};
})

Pour partager les données entre des contrôleurs indépendants, les services peuvent être utilisés. Créez un service avec le modèle de données qui doit être partagé. Injectez le service dans les contrôleurs respectifs.

function ControllerA($scope, User) {
    $scope.user = User;
    $scope.user.firstname = "Vinoth";
}

function ControllerB($scope, User) {
    $scope.user = User;
    $scope.user.lastname = "Babu";        
}
40
Thalaivar

Vous pouvez simplement utiliser $ emit/$ broadcast pour traduire les changements de données d'une portée de contrôleur à une autre. Ou stockez simplement ces variables sur $ rootScope.

11
Sergey Moiseev
app.controller('foo2', function ($scope) {
    $scope.$$prevSibling.bar="bar"
});
5
ericj