我想知道我是否可以在 $rootScope.$on
函数中调用 $rootScope.$emit
,原因是我有两个 Controller ctrl1.js
和`ctrl2.js,
我想在我的 ctrl1.js 中调用 ctrl2.js 的方法
我刚刚才接触 angularjs,这是我的代码,谢谢,
/* Ctrl1 */
$rootScope.$on("rootScopeDisplayPage", function(event,target){
$rootScope.$emit("CallAMethodFromCtrl2", target);
});
/* Ctrl2 */
$rootScope.$on("CallAMethodFromCtrl2", function(event, target){
$scope.displayArticle(target);
});
$scope.displayArticle = function(articleStatus){
/* do something */
}
它就像一个嵌套的 $rootScope.$on
谢谢你,
最佳答案
有两种事件广播方法:$rootScope.$broadcast() 和$rootScope.$emit()。第一个将通过作用域树的后代向下发送事件。 $emit() 方法将通过作用域树的祖先向上发送事件。当您使用 $rootScope.$on() 方法绑定(bind)到一个事件时,您的处理程序将被调用,而不管原始事件是如何触发的(即,广播与发射)。
所以你不能在上面使用 $rootScope.$emit,因为发出的事件永远不会通过作用域树。
关于javascript - 我可以在 $rootScope.$on 函数中调用 $rootScope.$emit 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47215549/