如何从不同的控制器AngularJS调用控制器中的函数

时间:2015-06-02 08:56:43

标签: javascript angularjs

我正在研究如何强制控制器从另一个控制器刷新。

为此我使用简单的测试功能:

function test() { alert('test'); }

我认为使用事件是解决此问题的最佳方法。

我使用了以下代码:

第一个控制器

.controller('firstcontroller', function($rootScope,$scope, $http,$timeout) {
$scope.$emit('testevent'); })

第二个控制器

.controller('firstcontroller', function($rootScope,$scope, $http,$timeout) {
   $scope.$on('refreshr', function (event) {
        alert('test');
    }); })

但这不起作用!有什么建议吗?

2 个答案:

答案 0 :(得分:2)

您可以使用$ rootScope。$ broadcast函数向所有子范围广播事件。然后在你的控制器中你做$ scope。$ on。但请确保事件名称相同。

这应该是它。

第一个控制器

typedef

第二个控制器

.controller('firstcontroller', function($rootScope,$scope, $http,$timeout) {
        $rootScope.$broadcast('testevent'); 
})

答案 1 :(得分:1)

event names不同,也在rootScope级广播。

.controller('firstcontroller', function($rootScope,$scope, $http,$timeout) {
    $rootScope.$broadcast('testevent'); 
})

.controller('secondcontroller', function($rootScope,$scope, $http,$timeout) {
   $scope.$on('testevent', function (event) {
        alert('test');
   }) 
})