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 相关文章推荐
javascript attachEvent和addEventListener使用方法
Mar 19 Javascript
Js数组排序函数sort()介绍
Jun 08 Javascript
jQuery.form插件的使用及跨域异步上传文件
Apr 27 Javascript
纯JS前端实现分页代码
Jun 21 Javascript
php简单数据库操作类的封装
Jun 08 Javascript
详解微信小程序中的页面代码中的模板的封装
Oct 12 Javascript
JavaScript实现淘宝京东6位数字支付密码效果
Aug 18 Javascript
Vue 中对图片地址进行拼接的方法
Sep 03 Javascript
antd组件Upload实现自己上传的实现示例
Dec 18 Javascript
JavaScript设计模式之命令模式实例分析
Jan 16 Javascript
总结4个方面优化Vue项目
Feb 11 Javascript
微信小程序button标签open-type属性原理解析
Jan 21 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 文件上传源码分析(RFC1867)
2009/10/30 PHP
php中heredoc与nowdoc介绍
2014/12/25 PHP
46 个非常有用的 PHP 代码片段
2016/02/16 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
jQuery 版本的文本输入框检查器Input Check
2009/07/09 Javascript
javascript 一个函数对同一元素的多个事件响应
2009/07/25 Javascript
js apply/call/caller/callee/bind使用方法与区别分析
2009/10/28 Javascript
js弹出框轻量级插件jquery.boxy使用介绍
2013/01/15 Javascript
IE的fireEvent方法概述及应用
2013/02/22 Javascript
event对象获取方法总结在google浏览器下测试
2013/11/03 Javascript
jquery validation验证身份证号,护照,电话号码,email(实例代码)
2013/11/06 Javascript
JavaScript中property和attribute的区别详细介绍
2015/03/03 Javascript
纯javascript实现四方向文本无缝滚动效果
2015/06/16 Javascript
javascript三种代码注释方法
2016/06/02 Javascript
jQuery实现区域打印功能代码详解
2016/06/17 Javascript
javascript 四十条常用技巧大全
2016/09/09 Javascript
详解React的回调渲染模式
2020/09/10 Javascript
python实现从一组颜色中找出与给定颜色最接近颜色的方法
2015/03/19 Python
Python高级特性切片(Slice)操作详解
2018/09/27 Python
Python、 Pycharm、Django安装详细教程(图文)
2019/04/12 Python
Python: 传递列表副本方式
2019/12/19 Python
简单了解python filter、map、reduce的区别
2020/01/14 Python
Python实现一个简单的毕业生信息管理系统的示例代码
2020/06/08 Python
css3 flex布局 justify-content:space-between 最后一行左对齐
2020/01/02 HTML / CSS
Ted Baker英国官网:男士和女士服装及配件
2017/03/13 全球购物
100%植物性、有机、即食餐:Sakara Life
2018/10/25 全球购物
宝宝周岁宴答谢词
2014/01/26 职场文书
运动会稿件100字
2014/02/21 职场文书
物业公司的岗位任命书
2014/06/06 职场文书
实习工作表现评语
2014/12/31 职场文书
情侣之间的道歉短信
2015/05/12 职场文书
2015年三年级班主任工作总结
2015/05/21 职场文书
酒吧七夕情人节宣传语
2015/11/24 职场文书
关于PHP数组迭代器的使用方法实例
2021/11/17 PHP
「SHOW BY ROCK!!」“雫シークレットマインド”组合单曲MV公开
2022/03/21 日漫