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 ?
-
In the provided code, both event does not have same names ('testevent', 'refreshr' ?, both controller have same name ('firstcontroller')?jbigman– jbigman2015年06月02日 09:02:48 +00:00Commented Jun 2, 2015 at 9:02
-
See this answer to a similar thread: stackoverflow.com/a/14502755/2509908chris– chris2015年06月02日 09:03:57 +00:00Commented Jun 2, 2015 at 9:03
2 Answers 2
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');
})
})
Comments
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');
});
})