Angularjs 事件指令詳細整理,angularjs事件指令

來源:互聯網
上載者:User

Angularjs 事件指令詳細整理,angularjs事件指令

Angularjs 事件指令詳細整理

ngClick

適用標籤:所有
觸發條件:單擊

#html<div ng-controller="LearnCtrl">  <div ng-click="click()">click me</div>  <button ng-click="click()">click me</button></div>#scriptangular.module('learnModule', [])    .controller('LearnCtrl', function ($scope) {      $scope.click = function () {        alert('click');      }    });    

ngDblclick

適用標籤:所有
觸發條件:雙擊

#html<div ng-controller="LearnCtrl">  <div ng-dblclick="dblclick()">click me</div>  <button ng-dblclick="dblclick()">click me</button></div>#scriptangular.module('learnModule', [])    .controller('LearnCtrl', function ($scope) {      $scope.dblclick = function () {        alert('click');      }    });

ngBlur

適用標籤:

  • a
  • input
  • select
  • textarea

觸發條件:失去焦點

#html<div ng-controller="LearnCtrl">  <a href="" ng-blur=" rel="external nofollow" blur()">link</a>  <input type="text" ng-blur="blur()"/>  <textarea cols="30" rows="10" ng-blur="blur()"></textarea>  <select ng-blur="blur()">    <option>----</option>    <option>jacky</option>    <option>rose</option>  </select></div>#scriptangular.module('learnModule', [])    .controller('LearnCtrl', function ($scope) {      $scope.blur = function () {        alert('blur');      }    });

ngFocus

適用標籤:

  1. a
  2. input
  3. select
  4. textarea

觸發條件:擷取焦點

#html<div ng-controller="LearnCtrl">  <a href="" ng-focus=" rel="external nofollow" focus()">link</a>  <input type="text" ng-focus="focus()"/>  <textarea cols="30" rows="10" ng-focus="focus()"></textarea>  <select ng-focus="focus()">    <option>----</option>    <option>jacky</option>    <option>rose</option>  </select></div>#scriptangular.module('learnModule', [])    .controller('LearnCtrl', function ($scope) {      $scope.focus= function () {        alert('focus');      }    });

ngChange

適用標籤:input
觸發條件:model更新

輸入框的內容改變並不代表model的值更新。按我的理解,一般當兩個狀態互相切換時,model值會更新。兩個狀態我稱之為合法狀態和不合法狀態。

不合法的狀態:輸入的內容不符合type類型,如email類型。輸入的內容不符合校正條件,如ngMinlength。不合法的狀態下,model會被更新成undefined。

合法的狀態:輸入的內容是符合類型和校正條件的。

#html<div ng-controller="LearnCtrl">  <input type="text" ng-model="text" ng-change="change()" ng-minlength="5"/></div>#scriptangular.module('learnModule', [])    .controller('LearnCtrl', function ($scope) {      //$scope.text='';      $scope.change = function () {        alert('change');      }          });

初始化和不初始化text的條件下,change觸發是不一樣的哦,這裡涉及到model初始化和更新機制。

ngCopy

適用標籤:

  1. a
  2. input
  3. select
  4. textarea

官方api上說使用的標籤是這些,我沒明白a和select複製有啥子用。另外,我換個div實際上也能觸發copy事件。一般常用的就是input和textarea。

觸發條件:複製。滑鼠右鍵複製和快速鍵Ctrl+C都會觸發。

#html<div ng-controller="LearnCtrl">  <input type="text" ng-copy="copy()"/>  <textarea cols="30" rows="10" ng-copy="copy()"></textarea></div>#scriptangular.module('learnModule', [])    .controller('LearnCtrl', function ($scope) {      $scope.copy = function () {        alert('copy');      }    });

ngCut

適用標籤:

  • a
  • input
  • select
  • textarea

觸發條件:剪下。滑鼠右鍵剪下和快速鍵Ctrl+X都會觸發。

#html<div ng-controller="LearnCtrl">  <input type="text" ng-cut="cut()"/>  <textarea cols="30" rows="10" ng-cut="cut()"></textarea></div>#scriptangular.module('learnModule', [])    .controller('LearnCtrl', function ($scope) {      $scope.cut = function () {        alert('cut');      }    });

ngPaste

適用標籤:

ainputselecttextarea

觸發條件:粘貼。滑鼠右鍵粘貼和快速鍵Ctrl+V都會觸發。

#html<div ng-controller="LearnCtrl">  <input type="text" ng-paste="paste()"/>  <textarea cols="30" rows="10" ng-paste="paste()"></textarea></div>#scriptangular.module('learnModule', [])    .controller('LearnCtrl', function ($scope) {      $scope.paste = function () {        alert('paste');      }    });

ngKeydown

適用標籤:所有

個人感覺還是input和textarea比較常用

觸發條件:鍵盤按鍵按下

要把$event傳過去,一般都是要判斷按了哪個按鍵的。

#html<div ng-controller="LearnCtrl">  <input type="text" ng-keydown="keydown($event)"/>  <textarea cols="30" rows="10" ng-keydown="keydown($event)"></textarea></div>#scriptangular.module('learnModule', [])    .controller('LearnCtrl', function ($scope) {      $scope.keydown = function ($event) {        alert($event.keyCode);      }    });

ngKeyup

適用標籤:所有

個人感覺還是input和textarea比較常用

觸發條件:鍵盤按鍵按下並鬆開

#html<div ng-controller="LearnCtrl">  <input type="text" ng-keyup="keyup($event)"/>  <textarea cols="30" rows="10" ng-keyup="keyup($event)"></textarea></div>#scriptangular.module('learnModule', [])    .controller('LearnCtrl', function ($scope) {      $scope.keyup = function ($event) {        alert($event.keyCode);      }    });

ngKeypress

適用標籤:所有

個人感覺還是input和textarea比較常用

觸發條件:鍵盤按鍵按下

#html<div ng-controller="LearnCtrl">  <input type="text" ng-keypress="keypress($event)"/>  <textarea cols="30" rows="10" ng-keypress="keypress($event)"></textarea></div>#scriptangular.module('learnModule', [])    .controller('LearnCtrl', function ($scope) {      $scope.keypress = function ($event) {        alert($event.keyCode);      }    });

keydown,keypress,keydown三者區別

引發事件的按鍵

非字元鍵不會引發 KeyPress 事件,但非字元鍵卻可以引發 KeyDown 和 KeyUp 事件。

事件引發的時間

KeyDown 和 KeyPress 事件在按下鍵時發生,KeyUp 事件在釋放鍵時發生。

事件發生的順序

KeyDown -> KeyPress -> KeyUp。如果按一個鍵很久才鬆開,發生的事件為:KeyDown -> KeyPress -> KeyDown -> KeyPress -> KeyDown -> KeyPress -> ... -> KeyUp。

  • KeyDown觸發後,不一定觸發KeyUp,當KeyDown 按下後,拖動滑鼠,那麼將不會觸發KeyUp事件。
  • KeyPress主要用來捕獲數字(注意:包括Shift+數位符號)、字母(注意:包括大小寫)、小鍵盤等除了F1-12、SHIFT、Alt、Ctrl、Insert、Home、PgUp、Delete、End、PgDn、ScrollLock、Pause、NumLock、{菜單鍵}、{開始鍵}和方向鍵外的ANSI字元。
  • KeyDown 和KeyUp 通常可以捕獲鍵盤除了PrScrn所有按鍵(這裡不討論特殊鍵盤的特殊鍵)。
  • KeyPress 只能捕獲單個字元。
  • KeyDown 和KeyUp 可以擷取的群組合鍵。
  • KeyPress 可以捕獲單個字元的大小寫。
  • KeyDown和KeyUp 對於單個字元捕獲的KeyValue 都是一個值,也就是不能判斷單個字元的大小寫。
  • KeyPress 不區分小鍵盤和主鍵盤的數字字元。
  • KeyDown 和KeyUp 區分小鍵盤和主鍵盤的數字字元。
  • 其中PrScrn 按鍵KeyPress、KeyDown和KeyUp 都不能捕獲。

ngMousedown

適用標籤:所有
觸發條件:滑鼠按下,左右中間按下都會觸發

#html<div ng-controller="LearnCtrl">  <button ng-mousedown="mousedown($event)">button</button></div>#scriptangular.module('learnModule', [])    .controller('LearnCtrl', function ($scope) {      $scope.mousedown = function ($event) {        alert($event.which);      }    });

ngMouseup

適用標籤:所有
觸發條件:滑鼠按下彈起,左右中間按下彈起都會觸發

#html<div ng-controller="LearnCtrl">  <button ng-mouseup="mouseup($event)">button</button></div>#scriptangular.module('learnModule', [])    .controller('LearnCtrl', function ($scope) {      $scope.mouseup = function ($event) {        alert($event.which);      }    });

ngMouseenter

適用標籤:所有
觸發條件:滑鼠進入

#html<div ng-controller="LearnCtrl">  <button ng-mouseenter="mouseenter()">button</button></div>#scriptangular.module('learnModule', [])    .controller('LearnCtrl', function ($scope) {      $scope.mouseenter = function () {        alert('mouseenter');      }    });

ngMouseleave

適用標籤:所有
觸發條件:滑鼠離開

#html<div ng-controller="LearnCtrl">  <button ng-mouseleave="mouseleave()">button</button></div>#scriptangular.module('learnModule', [])    .controller('LearnCtrl', function ($scope) {      $scope.mouseleave = function () {        alert('mouseleave');      }    });

ngMousemove

適用標籤:所有
觸發條件:滑鼠移動

#html<div ng-controller="LearnCtrl">  <button ng-mousemove="mousemove()">button</button></div>#scriptangular.module('learnModule', [])    .controller('LearnCtrl', function ($scope) {      $scope.mousemove = function () {        alert('mousemove');      }    });

ngMouseover

適用標籤:所有
觸發條件:滑鼠進入

 感謝閱讀,希望能協助到大家,謝謝大家對本站的支援,如有疑問請留言或者到本站社區交流討論,大家共同進步!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.