Angular $emit $broadcast $on controller的理解以及使用中出现的问题

本文介绍了Angular中父子控制器之间如何利用$emit、$broadcast和$on进行通信,以及在实际使用中遇到的问题。当子控制器需要调用父控制器的方法时,可以直接访问。反之,父控制器通过事件传递来调用子控制器。在兄弟控制器之间通信时,可以通过父控制器作为中介。当出现子控制器监听不到父控制器事件的问题时,可能是因为监听的控制器未在当前页面使用,导致无法触发$on。
摘要由CSDN通过智能技术生成

一般情况下,在项目中angular会被分割成两层controller,最外面的父级controller,以及父级下面的子级controller.如下:

<!doctype html>
<html ng-app="test">
<head>
    <meta charset="utf-8">
</head>
<body ng-controller="parentController">
    <div ng-controller="childController1"></div>
    <div ng-controller="childController2"></div>
</body>
</html>

这个具体的作用,可以简单理解为作用域分离。类似在js中定义两个function,他们里面自定义的变量是不可以相互调用的。这边的parentController作用域可以类似的理解为全局变量(类似)。这边就考虑到$scope作用域了。
在parentController中定义一个方法:

angular.module('test').controller('parentController', ['$scope',function($scope){
   
    $scope.parentCall = function(){
   
        console.log("parent call");
    };
}]);

那么我们在childController1和childController2中都是可以调用parentCall这个方法的。

angular.module('test').controller('childController1'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值