Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

I have this:

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

How would I accomplish this?

share|improve this question
add comment

3 Answers

up vote 3 down vote accepted

You could use an Angular Service to share variable acrosss multiple controllers.

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

To share the data among independent controllers, Services can be used. Create a service with the data model that needs to be shared. Inject the service in the respective controllers.

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

function ControllerB($scope, User) {
    $scope.user = User;
    $scope.user.lastname = "Babu";        
}
share|improve this answer
    
What does $scope.user = User; without quotes do? –  think123 Mar 22 at 22:32
    
@think123: Its the service.... $scope.user = {} –  Vinothbabu Mar 23 at 10:16
    
Ah, right. I also have a route parameter argument in ControllerA, so how would I add that in as well? –  think123 Mar 24 at 4:23
add comment

You just can use $emit/$broadcast for translate changes of data from one controller scope to another. Or just store these variables on $rootScope.

share|improve this answer
add comment
app.controller('foo2', function ($scope) {
    $scope.$$prevSibling.bar="bar"
});
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.