2016-10-08 6 views
0

私はそれを属性として渡すことはできません!

ng-click = "function($ event)"を追加して$イベントをコントローラー関数に渡すことができますが、指示文の中でそれにアクセスしたいと思います。

究極の目的は、コントローラーではなく、ディレクティブ内の要素のstopPropagation()および/またはpreventDefault()です。

編集:私はそれに応じて

<div ng-app="myApp" ng-controller="MyCtrl"> 
    <button stop-toggle ng-click="testFunction($event)"> 
    click me 
    </button> 
    Hello, {{name}}! 
</div> 

var myApp = angular.module('myApp',[]); 

//myApp.directive('myDirective', function() {}); 
//myApp.factory('myService', function() {}); 

function MyCtrl($scope) { 
    $scope.name = 'Superhero'; 

    $scope.testFunction = function($event){ 
     console.log("you can access the event here:", $event); 
     $event.stopPropagation(); 
    } 
} 

myApp.directive('stopToggle', function(){ 
    return { 
    link: function(scope, elem, attrs){ 
     elem.bind('click', function(){ 
      console.log("how do i access the $event here??"); 
      // elem.stopPropagation(); // invalid function 
      // elem.preventDefault(); // invalid function 
     }) 

    } 
    } 
}); 

http://jsfiddle.net/Lvc0u55v/10656/

+0

.on内部関数の引数()などのイベントを渡すコードを掲載します@ AnirudhMangalvedhekar角度に 'on()'メソッドはありません – charlietfl

+0

関連コードを表示してください。最初に出現しなければならない実際のイベントに固有のものであるため、 '$ event'を属性として設定することはできません。 – charlietfl

+0

elem.bind( 'click'、function(){}はonの代わりです。 $イベントではなく、スコープ、要素自体、要素の属性にアクセスすることができます。 – PenguinSource

答えて

0
var myApp = angular.module('myApp',[]); 
    myApp.directive('stopToggle', function(){ 
     return { 
      link: function(scope, elem, attrs){ 
      elem.on('click', function(e){ 
       e.stopPropagation(); 
       e.preventDefault(); 
     }) 

    } 
    } 
}); 

ちょうど

関連する問題