2013-10-15 61 views
2

隨着AngularJS 1.2.0-rc.3的發佈,我正在搞ngCut,ngCopyngPaste,但我無法取消它們。我認爲規範不允許,但它確實如此。這是可能的...不能通過搜索找到任何東西(僅僅是取消傳播)。有任何想法嗎?如何取消ngEvent?

http://jsfiddle.net/XEEpv/

回答

4

不知道你的意思究竟是 「取消事件」,但你可以做什麼事件是:

  • preventDefault()這樣的默認操作,此事件通常觸發不會發生
  • stopPropagation()因此事件不會在DOM herarchy佈雷最多

我假定你想取消默認的動作,也就是,呼籲preventDefault()對事件:

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

的jsfiddle這裏:http://jsfiddle.net/M5jRW/

+0

嗯,這對我來說現在是有意義的... Angular不知道'$ scope.cut'綁定到一個可以取消的事件,所以它不會關心返回值。 'preventDefault'和'$ event.returnValue'(約翰回答)讓我得到我想要的。似乎儘管'$ event.returnValue'可能更符合Angular的方式,呃? – Langdon

+0

@Langdon不知道你用什麼標準將'$ event.returnValue'標記爲「更多AngularJS方式」:-) –

+0

我認爲他的意思是'returnValue'更符合輸入/輸出,而'preventDefault'是更多的是副作用。 – sonicblis

1

您可以設置$event.returnValue爲false:

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