8

AngularJS でワイルドカードを使用してスコープブロードキャストをキャプチャする方法はありますか?

例:

$rootScope.$on('*created', function () { // do stuff });

4

2 に答える 2

19

angular js ソース コードで$onは、次のように定義されています。

$on: function(name, listener) {
   var namedListeners = this.$$listeners[name];
   if (!namedListeners) {
      this.$$listeners[name] = namedListeners = [];
   }
   namedListeners.push(listener);

   return function() {
     namedListeners[indexOf(namedListeners, listener)] = null;
   };
},

this.$$listeners連想配列であり、javascript の連想配列は正規表現をキーとして使用しないため、短い答えは「できません」であることを示唆しています。

于 2013-08-17T00:51:30.473 に答える
0

そのままではありませんが..ヘルパー関数 customOn() を作成し、$on の代わりにそれを使用できます。customOn() は、イベント名に対して正規表現を実行し、任意のイベントをディスパッチできます。

于 2016-02-19T21:03:33.427 に答える