angularjs学习笔记—事件指令

angularjs学习笔记—事件指令

小俞 4.4k 3月30日 发布

  • 推荐 4 推荐
  • 收藏 17 收藏,11.1k 浏览

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没啥子区别,求大神指导下。最好有代码

时间: 2024-10-09 18:10:02

angularjs学习笔记—事件指令的相关文章

-_-#AngularJS学习笔记

AngularJS学习笔记 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <style> .done{display:none} .ignore{color:#999} </style> <ul> <li class="

angularjs 学习笔记 -----结构定义

1.  Module使用方法 var APP =angular.module('fontApp',['ngResource', 'ngRoute', 'ngSanitize']); APP为定义的别名,之后的调用都应尽量使用该别名 'fontApp' ng-app="fontApp" 新版本angular中route被分离出来,各个被使用的Providerdou需要在此处声明. 大型应用应该拆分模块来做,先定义一个服务模块,然后再加载它 angular.module('xmpl.ser

AngularJs学习笔记--directive

原版地址:http://code.angularjs.org/1.0.2/docs/guide/directive Directive是教HTML玩一些新把戏的途径.在DOM编译期间,directives匹配HTML并执行.这允许directive注册行为或者转换DOM结构. Angular自带一组内置的directive,对于建立Web App有很大帮助.继续扩展的话,可以在HTML定义领域特定语言(domain specific language ,DSL). 一.在HTML中引用direc

OGEngine学习笔记--- 事件传递

事件传递 Android中的事件在表现形式上有很多,如onTouch.onClick和onLongClick等,在具体微观上的表现形势有action_down.action_move和action_up等. 无论哪种事件表现类型,首先都是基于事件的传递模型.其实Android中的事件传递有点类似于JS中事件传递模型.都是基于先捕获然后冒泡的形式. 在OGEngine的API中,OGEngine负责捕获触摸事件,如果我们需要监听触摸事件,则需要向Scene注册. mScene.registerTo

JS学习笔记-事件绑定

一.传统事件模型 传统事件模型中存在局限性. 内联模型以HTML标签属性的形式使用,与HTML混写,这种方式无疑造成了修改以及扩展的问题,已经很少使用了. 脚本模型是将事件处理函数写到js文件中,从页面获取元素进行对应事件函数的绑定以触发执行.但也存在不足之处: 1.一个事件绑定多个事件监听函数,后者将覆盖前者. 2.需要限制重复绑定的情况 3.标准化event对象 二.现代事件绑定 DOM2级事件定义了两个方法用于添加.删除事件:addEventListener().removeEventLi

angularjs 学习笔记(一) -----JSONP跨站访问

1.  下载angular-seed-master-master包,解压缩后将新版本的angularJS文件放入其中. 2.  制作frontmockup文件夹(前端调用),同时制作backmockup文件夹(后端调用),使用IIS开启2个webserver(此步骤可以用其他方式替代). 3.  backmockup站点添加以下HTTP头 Access-Control-Allow-Credentials:true Access-Control-Allow-Headers:origin,x-req

angularjs 学习笔记(二) ----- bootstrap框架

1.  下载新的jquery-1.11.1文件. 2.  下载新的bootstrap文件. 3.  选择流式布局的模板填充入index.html文件. 4.  将top.foot转为nginclude文件 nginclude必须使用$scope对象,因此需要设置一个全局的mainctrl来将字符串或全局变量注入$cope中. $rootScope.global =global; 直接将全局变量global赋值给$rootScope,并且之后的子$Scope会获得继承,静态定义与ctrl分开. 5

AngularJs学习笔记--Guide教程系列文章索引

在很久很久以前,一位前辈向我推荐AngularJs.但当时我没有好好学习,仅仅是讲文档浏览了一次.后来觉醒了……于是下定决心好好理解这系列的文档,并意译出来(英文水平不足……不能说是翻译,有些实在是看不懂,希望大家在参观的过程中指出其中的错误).经过1个多月断断续续的努力,终于把Guide里面的文章基本上都弄出来.Guide中的部分章节,由于重复的部分似乎有点多,而且篇幅较短,这里就没有列出来. 文章列表如下: AngularJs学习笔记--bootstrap AngularJs学习笔记--ht

AngularJS学习笔记filter

filter是对数据进行过滤操作,比如按某个字段搜索.格式化数据等等,是一个非常有用的接口.下面就简单介绍下它的用法. AngularJS自带的filter接口,|是filter的分隔符,参数用:分隔: currency,格式化number,货币化,默认是转化成美元  param(number,symbol),返回值将会把数字每3位加一个逗号 <input type="number" ng-model="amount"/> <p>默认美元:{