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 suggest效果 自动完成实现代码分享
Feb 17 Javascript
jQuery用unbind方法去掉hover事件及其他方法介绍
Mar 18 Javascript
javascript限制用户只能输汉字中文的方法
Nov 20 Javascript
javascript中select下拉框的用法总结
Jan 07 Javascript
Angular实现form自动布局
Jan 28 Javascript
jQuery简单动画变换效果实例分析
Jul 04 Javascript
微信小程序实现锚点定位楼层跳跃的实例
May 18 Javascript
微信小程序日期选择器实例代码
Jul 18 Javascript
bootstrap table合并行数据并居中对齐效果
Oct 17 Javascript
Vue.js 使用v-cloak后仍显示变量的解决方法
Nov 19 Javascript
微信小程序实现modal弹出框遮罩层组件(可带文本框)
Dec 20 Javascript
如何制作自己的原生JavaScript路由
May 05 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使用标签替换的方式生成静态页面
2015/05/21 PHP
PHP生成唯一订单号
2015/07/05 PHP
键盘上一张下一张兼容IE/google/firefox等浏览器
2014/01/28 Javascript
AngularJS+Node.js实现在线聊天室
2015/08/28 Javascript
JavaScript学习小结(7)之JS RegExp
2015/11/29 Javascript
常见的javascript跨域通信方法
2015/12/31 Javascript
基于Javascript实现二级联动菜单效果
2016/03/04 Javascript
requirejs + vue 项目搭建详解
2017/06/16 Javascript
如何选择适合你的JavaScript框架
2017/11/20 Javascript
JavaScript同源策略和跨域访问实例详解
2018/04/03 Javascript
vue使用vue-i18n实现国际化的实现代码
2018/04/08 Javascript
微信小程序实现带参数的分享功能(两种方法)
2019/05/17 Javascript
浅谈webpack构建工具配置和常用插件总结
2020/05/11 Javascript
微信小程序上传帖子的实例代码(含有文字图片的微信验证)
2020/07/11 Javascript
python 自动提交和抓取网页
2009/07/13 Python
python socket 超时设置 errno 10054
2014/07/01 Python
Python运用于数据分析的简单教程
2015/03/27 Python
用Python计算三角函数之atan()方法的使用
2015/05/15 Python
Windows下安装python2和python3多版本教程
2017/03/30 Python
Python如何通过subprocess调用adb命令详解
2017/08/27 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
2017/08/30 Python
python对list中的每个元素进行某种操作的方法
2018/06/29 Python
python交互界面的退出方法
2019/02/16 Python
解决Django加载静态资源失败的问题
2019/07/28 Python
HTML5通用接口详解
2016/06/12 HTML / CSS
Raleigh兰令自行车美国官网:英国凤头牌自行车
2018/01/08 全球购物
高校教师思想汇报
2014/01/11 职场文书
九年级家长会邀请函
2014/01/15 职场文书
百日安全活动总结
2014/05/04 职场文书
先进党支部申报材料
2014/12/24 职场文书
2019年国庆祝福语(70句)
2019/09/19 职场文书
vue项目两种方式实现竖向表格的思路分析
2021/04/28 Vue.js
Python深度学习之实现卷积神经网络
2021/06/05 Python
Golang中异常处理机制详解
2021/06/08 Golang
Log4j.properties配置及其使用
2021/08/02 Java/Android
Nginx文件已经存在全局反向代理问题排查记录
2022/07/15 Servers