Angular Js 事件传递、广播、Controller间数据交互

架设有这么三个Controller,Golbal在外面,另外两个在里面

  • GlobalController
    • UserListController
    • UserDetailController

UserListController触发一个事件change_user冒泡到GlobalController中

$scope.selectUser = function(user) {
    $scope.active_uid = user.uid;
    $scope.$emit('change_user',user.uid,user);//后面可以传若干个参数
};

 

GlobalController响应这个事件

$scope.$on('change_user', function(event,uid,user){
    //TODO something
});

 

GlobalController广播一个事件到自己和所有的子Controller中

$scope.$on('change_user', function(event,uid,user){
    $scope.$broadcast('parent_change_user',uid,user);//如果写成change_user就死循环了,因为这里广播的事件自己也能响应
});

 

UserDetailController接收广播

$scope.$on('parent_change_user', function(event,uid,user){
    //TODO something
});

 

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注