2015-12-26 129 views
0

我想讓我的指令多選擇器。AngularJS指令多選擇器

我的指令提醒每個水龍頭。

我已經寫這段代碼:

angular 
    .module('app.directives') 
    .directive('onTap', someDirective) 
    .directive('button', someDirective); 

someDirective.$inject = ['$ionicGesture']; 

function someDirective($ionicGesture) { 
    return { 
     restrict: 'EA', 
     link: link 
    }; 

    function link($scope, $elem, $attrs) { 
     $ionicGesture.on('tap', function() { 
      alert('Tapped!'); 
     }, $elem); 
    } 
} 

這段代碼的問題是這個按鈕例如:

<button on-tap="doSomething()">Do something</button> 

因爲這個按鈕水龍頭會提醒兩次!

如果我改變指令我甚至可以解決:

.directive('someDirective', someDirective); 

但這也意味着我必須把它添加到每個button[onTap]選擇。

任何好的解決方案?

回答

0

你可以試試這個:

function someDirective($ionicGesture) { 
    var directive = { 
     restrict: 'EA', 
     link: link 
    }; 

    return directive; 

    function link($scope, $elem, $attrs, ctrls) { 
     if (directive.name === 'onTap' && $elem.is('button')) { 
      return; 
     } 

     $ionicGesture.on('tap', function() { 
      alert('Tapped!'); 
     }, $elem); 
    } 
} 
+0

這不是我的意思。我的意思是我想製作一個選擇器列表,它可以在點擊時執行提醒功能。如果該元素在我的列表中多於一個選擇器(按鈕,[onTap]),則警報將只執行一次而不是兩次。 –