Angularjs 事件指令詳細(xì)整理
Angularjs 事件指令詳細(xì)整理
ngClick
適用標(biāo)簽:所有
觸發(fā)條件:單擊
#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
適用標(biāo)簽:所有
觸發(fā)條件:雙擊
#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
適用標(biāo)簽:
- a
- input
- select
- textarea
觸發(fā)條件:失去焦點(diǎn)
#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
適用標(biāo)簽:
- a
- input
- select
- textarea
觸發(fā)條件:獲取焦點(diǎn)
#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
適用標(biāo)簽:input
觸發(fā)條件:model更新
輸入框的內(nèi)容改變并不代表model的值更新。按我的理解,一般當(dāng)兩個(gè)狀態(tài)互相切換時(shí),model值會(huì)更新。兩個(gè)狀態(tài)我稱之為合法狀態(tài)和不合法狀態(tài)。
不合法的狀態(tài):輸入的內(nèi)容不符合type類型,如email類型。輸入的內(nèi)容不符合校驗(yàn)條件,如ngMinlength。不合法的狀態(tài)下,model會(huì)被更新成undefined。
合法的狀態(tài):輸入的內(nèi)容是符合類型和校驗(yàn)條件的。
#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觸發(fā)是不一樣的哦,這里涉及到model初始化和更新機(jī)制。
ngCopy
適用標(biāo)簽:
- a
- input
- select
- textarea
官方api上說使用的標(biāo)簽是這些,我沒明白a和select復(fù)制有啥子用。另外,我換個(gè)div實(shí)際上也能觸發(fā)copy事件。一般常用的就是input和textarea。
觸發(fā)條件:復(fù)制。鼠標(biāo)右鍵復(fù)制和快捷鍵Ctrl+C都會(huì)觸發(fā)。
#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
適用標(biāo)簽:
- a
- input
- select
- textarea
觸發(fā)條件:剪切。鼠標(biāo)右鍵剪切和快捷鍵Ctrl+X都會(huì)觸發(fā)。
#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
適用標(biāo)簽:
a input select textarea
觸發(fā)條件:粘貼。鼠標(biāo)右鍵粘貼和快捷鍵Ctrl+V都會(huì)觸發(fā)。
#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
適用標(biāo)簽:所有
個(gè)人感覺還是input和textarea比較常用
觸發(fā)條件:鍵盤按鍵按下
要把$event傳過去,一般都是要判斷按了哪個(gè)按鍵的。
#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
適用標(biāo)簽:所有
個(gè)人感覺還是input和textarea比較常用
觸發(fā)條件:鍵盤按鍵按下并松開
#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
適用標(biāo)簽:所有
個(gè)人感覺還是input和textarea比較常用
觸發(fā)條件:鍵盤按鍵按下
#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三者區(qū)別
引發(fā)事件的按鍵
非字符鍵不會(huì)引發(fā) KeyPress 事件,但非字符鍵卻可以引發(fā) KeyDown 和 KeyUp 事件。
事件引發(fā)的時(shí)間
KeyDown 和 KeyPress 事件在按下鍵時(shí)發(fā)生,KeyUp 事件在釋放鍵時(shí)發(fā)生。
事件發(fā)生的順序
KeyDown -> KeyPress -> KeyUp。如果按一個(gè)鍵很久才松開,發(fā)生的事件為:KeyDown -> KeyPress -> KeyDown -> KeyPress -> KeyDown -> KeyPress -> ... -> KeyUp。
- KeyDown觸發(fā)后,不一定觸發(fā)KeyUp,當(dāng)KeyDown 按下后,拖動(dòng)鼠標(biāo),那么將不會(huì)觸發(fā)KeyUp事件。
- KeyPress主要用來捕獲數(shù)字(注意:包括Shift+數(shù)字的符號)、字母(注意:包括大小寫)、小鍵盤等除了F1-12、SHIFT、Alt、Ctrl、Insert、Home、PgUp、Delete、End、PgDn、ScrollLock、Pause、NumLock、{菜單鍵}、{開始鍵}和方向鍵外的ANSI字符。
- KeyDown 和KeyUp 通??梢圆东@鍵盤除了PrScrn所有按鍵(這里不討論特殊鍵盤的特殊鍵)。
- KeyPress 只能捕獲單個(gè)字符。
- KeyDown 和KeyUp 可以捕獲組合鍵。
- KeyPress 可以捕獲單個(gè)字符的大小寫。
- KeyDown和KeyUp 對于單個(gè)字符捕獲的KeyValue 都是一個(gè)值,也就是不能判斷單個(gè)字符的大小寫。
- KeyPress 不區(qū)分小鍵盤和主鍵盤的數(shù)字字符。
- KeyDown 和KeyUp 區(qū)分小鍵盤和主鍵盤的數(shù)字字符。
- 其中PrScrn 按鍵KeyPress、KeyDown和KeyUp 都不能捕獲。
ngMousedown
適用標(biāo)簽:所有
觸發(fā)條件:鼠標(biāo)按下,左右中間按下都會(huì)觸發(fā)
#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
適用標(biāo)簽:所有
觸發(fā)條件:鼠標(biāo)按下彈起,左右中間按下彈起都會(huì)觸發(fā)
#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
適用標(biāo)簽:所有
觸發(fā)條件:鼠標(biāo)進(jìn)入
#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
適用標(biāo)簽:所有
觸發(fā)條件:鼠標(biāo)離開
#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
適用標(biāo)簽:所有
觸發(fā)條件:鼠標(biāo)移動(dòng)
#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
適用標(biāo)簽:所有
觸發(fā)條件:鼠標(biāo)進(jìn)入
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持,如有疑問請留言或者到本站社區(qū)交流討論,大家共同進(jìn)步!
相關(guān)文章
angular ng-repeat數(shù)組中的數(shù)組實(shí)例
下面小編就為大家?guī)硪黄猘ngular ng-repeat數(shù)組中的數(shù)組實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02
AngularJs用戶輸入動(dòng)態(tài)模板XSS攻擊示例詳解
這篇文章主要給大家介紹了關(guān)于AngularJs用戶輸入動(dòng)態(tài)模板XSS攻擊的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用angularjs具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04
使用AngularJS對表單提交內(nèi)容進(jìn)行驗(yàn)證的操作方法
AngularJS是一款優(yōu)秀的前端JS框架,已經(jīng)被用于Google的多款產(chǎn)品當(dāng)中。下面通過本文給大家分享使用AngularJS對表單提交內(nèi)容進(jìn)行驗(yàn)證的操作方法,需要的的朋友參考下吧2017-07-07
淺談Angular.js中使用$watch監(jiān)聽模型變化
當(dāng)angular數(shù)據(jù)模型發(fā)生變化時(shí),我們需要如果需要根據(jù)他的變化觸發(fā)其他的事件。本篇文章主要介紹了Angular.js中使用$watch監(jiān)聽模型變化,有興趣的可以了解一下2017-01-01
AngularJS動(dòng)態(tài)生成select下拉框的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于AngularJS動(dòng)態(tài)生成select下拉框的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用AngularJS具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11

