angularjs事件指令

转载 2015年07月10日 10:39:18

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="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

适用标签:

  • a
  • input
  • select
  • textarea

触发条件:获取焦点

#html
<div ng-controller="LearnCtrl">
    <a href="" ng-focus="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

适用标签:

  • a
  • input
  • select
  • 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

适用标签:所有
触发条件:鼠标进入
个人感觉和ngMouseenter没啥子区别,求大神指导下。最好有代码

原文地址:http://segmentfault.com/a/1190000002634554

angularjs中$on、$emit和$broadcast使得event、data在controller之间的传递

AngularJS中的作用域有一个非常有层次和嵌套分明的结构。其中它们都有一个主要的$rootScope(也就说对应的Angular应用或者ng-app),然后其他所有的作用域部分都是继承自这个$ro...
  • gs932899178
  • gs932899178
  • 2017年02月19日 22:07
  • 692

AngularJS 使用元素与事件指令

学习要点: 使用元素指令 处理事件 管理特殊属性
  • super_yang_android
  • super_yang_android
  • 2016年06月05日 21:11
  • 1840

AngularJS中的滚动加载,通过ngInfiniteScroll实现下拉滚动加载

1.分页加载数据的基础上,如何通过滚动加载,实现分页加载数据的效果,github上,针对angularJS,有一款不错的插件,地址为:https://github.com/sroze/ngInfini...
  • liwusen
  • liwusen
  • 2016年08月05日 16:57
  • 6078

Angular解决IE和Firefox下button内部元素ng-click事件被屏蔽

如果我们在button元素内部有其它的子元素并且绑定点击事件,比如:而我们的代码是这样的: angular.module("app", []) .co...
  • u014291497
  • u014291497
  • 2016年09月10日 21:24
  • 1524

菜鸟AngularJS学习之路 【第二天】。(事件绑定指令 循环输出 控制器嵌套)

学习Angularjs 的第二天 ,感觉进步很慢,但是要稳扎稳打不能囫囵吞枣,每个知识点都必须敲一敲才能有效果。 先来回顾今天的第一个 事件绑定指令 首先按照书上写的例子 绑定...
  • u012922916
  • u012922916
  • 2017年04月19日 00:32
  • 221

angularjs学习笔记—事件指令

angularjs学习笔记—事件指令 ngClick 适用标签:所有 触发条件:单击 #html "LearnCtrl"> "click()">click me...
  • qq_Dai
  • qq_Dai
  • 2016年05月22日 20:32
  • 564

angularjs 的指令 和 事件 的小结

一直在看angularjs的教程,因为常用到指令与事件,就把他们写下来了,方便自己以后来查询。 AngularJS 指令 本教程用到的 AngularJS 指令 : 指令 描述 ...
  • u012767607
  • u012767607
  • 2017年04月27日 17:40
  • 256

(5)AngularJS 1.X 之事件指令

引言 AngularJS事件指令 1 代码实现1.引言      在上一篇博客中我们介绍了AngularJS中的控制器,在本篇博客中主要介绍一下AngularJS扩展的事件,其中AngularJS扩...
  • LoveCarpenter
  • LoveCarpenter
  • 2017年02月06日 18:06
  • 672

AngularJS学习笔记—事件指令

AngularJS学习笔记—事件指令
  • AUQF_zy
  • AUQF_zy
  • 2016年04月17日 17:01
  • 265

angularjs学习笔记—事件指令

angularjs学习笔记—事件指令(转) 原地址:https://segmentfault.com/a/1190000002634554 ngClick 适用标签:所有 触发...
  • pang_sanbai
  • pang_sanbai
  • 2016年02月18日 10:17
  • 187
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:angularjs事件指令
举报原因:
原因补充:

(最多只允许输入30个字)