2013-10-15 3 views
2

AngularJS 1.2.0-rc.3의 출시와 함께 ngCut, ngCopyngPaste으로 장난하고 있었지만 취소 할 수 없었습니다. 나는 스펙이 그것을 허용하지 않는다고 생각했다. 그러나 그렇다. 그것은 가능한 것이어야합니다 ... 둘 중 하나를 검색하여 실제로 아무 것도 찾을 수 없습니다 (단지 전파를 취소하는 것). 어떤 아이디어?ngEvent를 취소하려면 어떻게해야합니까?

http://jsfiddle.net/XEEpv/

답변

4

확실하지 당신이 "이벤트를 취소"하지만 당신이 무엇을 할 수 있는지에 의해 정확히 의미 이벤트는 다음과 같습니다 :

  • preventDefault() 그래서이 이벤트는 일반적으로 트리거되는 기본 동작은 이렇게 이벤트가 당신이 기본 동작을 취소하고 싶다고 가정

에서 DOM herarchy에서 buble하지 않는 장소

  • stopPropagation()을하지 않는, 즉 이벤트에 preventDefault() 전화 : 여기

    $scope.cut = function ($event) { 
        console.log('cut', $event); 
        $event.preventDefault(); 
    } 
    

    jsFiddle : http://jsfiddle.net/M5jRW/

  • +0

    Ahh, 이것은 나에게 의미가 있습니다 ... Angular는'$ scope.cut'이 취소 될 수있는 이벤트에 바인딩되어 있다는 것을 모릅니다. 반환 값에주의하십시오. 'preventDefault'와'$ event.returnValue' (John이 대답)는 내가 원하는 것을 얻습니다. '$ event.returnValue'가 Angular 방식에 더 가까울 수도 있습니다. – Langdon

    +0

    @Langdon "$ event.returnValue"를 "더 많은 AngularJS 방법"으로 표시하는 데 어떤 기준을 사용했는지 모르겠습니다 .-) –

    +0

    'returnValue'는 입/출력에 더 가깝고'preventDefault'는 더 많은 부작용이 있습니다. – sonicblis

    1

    false로 $event.returnValue을 설정할 수 있습니다

    function x($scope) { 
        $scope.cut = function ($event) { 
         $event.returnValue = false; 
         console.log('cut', $event); 
        } 
        $scope.kp = function ($event) { 
         console.log('keypress', $event); 
         return false; 
        } 
    } 
    

    여기에 업데이트 된 바이올린의 : http://jsfiddle.net/XEEpv/1/

    +0

    $ 할 event.returnValue 지금은 사용되지 않습니다 : * 할 event.returnValue가되지 않습니다. 대신 표준 event.preventDefault()를 사용하십시오. * – Langdon

    관련 문제