2016-10-08 2 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

CSTE 연구진은 내부 함수에 인수()로 이벤트를 전달 코드를 게시 할 예정입니다 @ 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(); 
     }) 

    } 
    } 
}); 

그냥

관련 문제