搜尋

首頁  >  問答  >  主體

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 天前541

全部回覆(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
  • 取消回覆