javascript - 我可以在 $rootScope.$on 函数中调用 $rootScope.$emit 吗?

标签 javascript jquery angularjs

我想知道我是否可以在 $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)到一个事件时,您的处理程序将被调用,而不管原始事件是如何触发的(即,广播与发射)。

enter image description here

所以你不能在上面使用 $rootScope.$emit,因为发出的事件永远不会通过作用域树。

关于javascript - 我可以在 $rootScope.$on 函数中调用 $rootScope.$emit 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47215549/

相关文章:

javascript - 如何将 JavaScript 数组转换为元素

javascript - 使用居中的用户指定文本动态创建 div

javascript - 客户端购物车 : Adding two items with same description in array

javascript - 自定义时工具提示未按预期显示

javascript - 元素在老一代 iPad 上无法正常显示?

javascript - mousemove 期间的 event.offsetX

javascript - jQuery 来回隐藏

jquery - 如何在页面加载时隐藏 Accordion 并仅在单击元素时显示

javascript - Mouse Out Orange Div "CurrentHeight"未应用

javascript - 隔离范围不更新指令中的值