欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Angularjs 事件指令详细整理

程序员文章站 2022-09-02 15:31:37
angularjs 事件指令详细整理 ngclick 适用标签:所有 触发条件:单击 #html

angularjs 事件指令详细整理

ngclick

适用标签:所有
触发条件:单击

#html
<div ng-controller="learnctrl">
  <div ng-click="click()">click me</div>
  <button ng-click="click()">click me</button>
</div>

#script
angular.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>

#script
angular.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>

#script
angular.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>

#script
angular.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>

#script
angular.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>

#script
angular.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>

#script
angular.module('learnmodule', [])

    .controller('learnctrl', function ($scope) {
      $scope.cut = function () {
        alert('cut');
      }
    });

ngpaste

适用标签:

a
input
select
textarea

触发条件:粘贴。鼠标右键粘贴和快捷键ctrl+v都会触发。

#html
<div ng-controller="learnctrl">
  <input type="text" ng-paste="paste()"/>
  <textarea cols="30" rows="10" ng-paste="paste()"></textarea>
</div>

#script
angular.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>

#script
angular.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>

#script
angular.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>

#script
angular.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>

#script
angular.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>

#script
angular.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>

#script
angular.module('learnmodule', [])

    .controller('learnctrl', function ($scope) {
      $scope.mouseenter = function () {
        alert('mouseenter');
      }
    });

ngmouseleave

适用标签:所有
触发条件:鼠标离开

#html
<div ng-controller="learnctrl">
  <button ng-mouseleave="mouseleave()">button</button>
</div>

#script
angular.module('learnmodule', [])

    .controller('learnctrl', function ($scope) {
      $scope.mouseleave = function () {
        alert('mouseleave');
      }
    });

ngmousemove

适用标签:所有
触发条件:鼠标移动

#html
<div ng-controller="learnctrl">
  <button ng-mousemove="mousemove()">button</button>
</div>

#script
angular.module('learnmodule', [])

    .controller('learnctrl', function ($scope) {
      $scope.mousemove = function () {
        alert('mousemove');
      }
    });

ngmouseover

适用标签:所有
触发条件:鼠标进入

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持,如有疑问请留言或者到本站社区交流讨论,大家共同进步!