使用$ on的函数调用不能来自$ scope

Jyo*_*Pan 4 angularjs

我正在使用普通的$ rootScope.$ broadcast将控制转移到另一个控制器.另一个控制器正在尝试基于此调用函数.问题是这个函数可以被称为$ scope函数,或者它始终是控制器中的私有函数.所以当我写下面的内容时:

  $scope.$on('aRequest',function(){console.log('it works')});
Run Code Online (Sandbox Code Playgroud)

它按预期工作.但是当我写道:

 $scope.$on('aRequest',$scope.someFunction());
Run Code Online (Sandbox Code Playgroud)

它不起作用.我也没有在控制台中看到语法错误.我错过了什么吗?

喜欢添加,当这个调用如下所示,它的工作原理:

 $scope.$on('aRequest',iWorkProperly);
 var iWorkProperly = function(){};
Run Code Online (Sandbox Code Playgroud)

Alo*_*tan 6

只写$scope.$on('toggleNavRequest',$scope.someFunction);没有()- 你传递对函数的引用,而不是实际触发它(Angular会触发函数调用)

例:

$scope.someFunction = function() {
    console.log("Hi");
};

$scope.$on('toggleNavRequest',$scope.someFunction);
Run Code Online (Sandbox Code Playgroud)