Reputation: 835
I'm looking on how to force a controller to refresh from another controller.
for that I'm using a simple test function :
function test() { alert('test'); }
I think using events is the best solution for this issue.
I used the following code :
First controller
.controller('firstcontroller', function($rootScope,$scope, $http,$timeout) {
$scope.$emit('testevent'); })
Second controller
.controller('firstcontroller', function($rootScope,$scope, $http,$timeout) {
$scope.$on('refreshr', function (event) {
alert('test');
}); })
but this is not working ! any advice ?
Upvotes: 1
Views: 42
Reputation: 8488
You event names
are different, also broadcast on rootScope
level.
.controller('firstcontroller', function($rootScope,$scope, $http,$timeout) {
$rootScope.$broadcast('testevent');
})
.controller('secondcontroller', function($rootScope,$scope, $http,$timeout) {
$scope.$on('testevent', function (event) {
alert('test');
})
})
Upvotes: 2
Reputation: 397
You can use $rootScope.$broadcast function to broadcast event to all child scopes. And then in you controller you do $scope.$on. But make sure that name of events are the same.
This should be it.
First controller
.controller('firstcontroller', function($rootScope,$scope, $http,$timeout) {
$rootScope.$broadcast('testevent');
})
Second controller
.controller('secondcontroller', function($rootScope,$scope, $http,$timeout) {
$scope.$on('testevent', function (event) {
alert('test');
});
})
Upvotes: 2