Angularjs 事件指令详细整理


Posted in Javascript onJuly 27, 2017

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

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

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

Javascript 相关文章推荐
幻宇的层模拟窗口效果-提供演示和下载
Jan 20 Javascript
DOM基础教程之使用DOM
Jan 19 Javascript
JavaScript实现的类字典插入或更新方法实例
Jul 10 Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
Dec 13 Javascript
JavaScript基础知识及常用方法总结
Jan 10 Javascript
Three.js基础部分学习
Jan 08 Javascript
JavaScript运动框架 解决速度正负取整问题(一)
May 17 Javascript
浅谈struts1 &amp; jquery form 文件异步上传
May 25 jQuery
JavaScript判断浏览器和hack滚动条的写法
Jul 23 Javascript
利用JavaScript如何查询某个值是否数组内
Jul 30 Javascript
使用vue-aplayer插件时出现的问题的解决
Mar 02 Javascript
微信小程序实现录音Record功能
May 09 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
Jul 27 #Javascript
js学习总结之DOM2兼容处理重复问题的解决方法
Jul 27 #Javascript
angular中实现li或者某个元素点击变色的两种方法
Jul 27 #Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
Jul 27 #Javascript
AngularJS点击添加样式、点击变色设置的实例代码
Jul 27 #Javascript
vue中计算属性(computed)、methods和watched之间的区别
Jul 27 #Javascript
angular2+node.js express打包部署的实战
Jul 27 #Javascript
You might like
PHP 各种排序算法实现代码
2009/08/20 PHP
简单的php文件上传(实例)
2013/10/27 PHP
wordpress自定义url参数实现路由功能的代码示例
2013/11/28 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
textContent在Firefox下与innerText等效的属性
2007/05/12 Javascript
将CKfinder整合进CKEditor3.0的新方法
2010/01/10 Javascript
jquery、js操作checkbox全选反选
2014/03/12 Javascript
js实现iframe跨页面调用函数的方法
2014/12/13 Javascript
javascript获得当前的信息的一些常用命令
2015/02/25 Javascript
JavaScript获取当前时间向前推三个月的方法示例
2017/02/04 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
2017/02/23 Javascript
js 获取html5的data属性实现方法
2017/07/28 Javascript
React-Native之定时器Timer的实现代码
2017/10/04 Javascript
Angular4.x Event (DOM事件和自定义事件详解)
2018/10/09 Javascript
[01:14:55]EG vs Spirit Supermajor 败者组 BO3 第三场 6.4
2018/06/05 DOTA
[45:52]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第二场 12.09
2020/12/12 DOTA
详细介绍Python语言中的按位运算符
2013/11/26 Python
Python中用PIL库批量给图片加上序号的教程
2015/05/06 Python
Python使用修饰器执行函数的参数检查功能示例
2017/09/26 Python
Python3读取Excel数据存入MySQL的方法
2018/05/04 Python
python3 selenium自动化 frame表单嵌套的切换方法
2019/08/23 Python
opencv3/C++ 平面对象识别&amp;透视变换方式
2019/12/11 Python
Python嵌套函数,作用域与偏函数用法实例分析
2019/12/26 Python
Python多进程编程multiprocessing代码实例
2020/03/12 Python
Python Dict找出value大于某值或key大于某值的所有项方式
2020/06/05 Python
One.com挪威:北欧成长最快的网络托管公司
2016/11/19 全球购物
毕业生求职简历的自我评价
2013/10/07 职场文书
竞职演讲稿范文
2014/01/11 职场文书
电大本科自我鉴定
2014/02/05 职场文书
2014领导班子四风问题查摆思想汇报
2014/09/13 职场文书
北京故宫的导游词
2015/01/31 职场文书
公司员工体检通知
2015/04/21 职场文书
硕士学位申请报告
2015/05/15 职场文书
导游词之蜀山胜景瓦屋山
2019/11/29 职场文书
《语言的突破》读后感3篇
2019/12/12 职场文书
浅谈什么是SpringBoot异常处理自动配置的原理
2021/06/21 Java/Android