搜索

首页  >  问答  >  正文

angular.js - angularjs如何同时监听两个以上的事件?

业务场景描述:

假设在子controller中,用户各种点击操作会被分成两个事件,被控制器广播到父控制器中

$scope.$emit('ngUserLogin');
$scope.$emit('ngUserUpdate');

在父控制器中,我们使用$on监听这两个事件没错,

$scope.$on('ngUserlogin', function(){"}
$scope.$on('ngUserUpload', function(){"}

但是在某个场景中,我发现这两个事件的执行的是相同的逻辑,所以我想这样写:

$scope.$on(['ngUserlogin','ngUserUpload'], function(){"}

这是我期望的模式,但是ng很明显是不能这么写的,想问问各位大侠在自己的实际业务中如何做到同时监听两个以上的事件

PHPzPHPz2744 天前546

全部回复(2)我来回复

  • 黄舟

    黄舟2017-05-15 17:05:07

    很可惜,ng没有你期望的这种模式,做一个小trick,可以这么写:

    angular.forEach(['ngUserlogin','ngUserUpload'], function(value){
        $scope.$on(value, function(event){
            console.log(event.name);//执行你想要的吧
        });
    });

    回复
    0
  • phpcn_u1582

    phpcn_u15822017-05-15 17:05:07

    你可以换个思路,你只发送一个事件,然后在发送这个事件的时候带上不同的参数$emit(name, args);;监听到这个事件的时候判断一下那个参数,就知道接下来你要做什么了。

    回复
    0
  • 取消回复