web-dev-qa-db-ja.com

AngularJSで1つのコントローラーの$ scope変数を別のコントローラーと共有する方法は?

私はこれを持っています:

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

どうすればこれを達成できますか?

Angularサービスを使用して、複数のコントローラー間で変数を共有できます。

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

独立したコントローラー間でデータを共有するには、サービスを使用できます。共有する必要があるデータモデルを使用してサービスを作成します。それぞれのコントローラーにサービスを注入します。

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

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

$ emit/$ broadcast を使用して、データの変更を1つのコントローラースコープから別のコントローラースコープに変換できます。または、これらの変数を$ rootScopeに保存します。

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