淺談angularJS中的事件
什么是事件
•如同瀏覽器響應(yīng)瀏覽器層的事件,比如鼠標點擊、獲得焦點,angular應(yīng)用也可以響應(yīng)angular事件
•angular事件系統(tǒng)并不與瀏覽器的事件系統(tǒng)相通,我們只能在作用域上監(jiān)聽angular事件而不是DOM事件
事件傳播
因為作用域是有層次的,所以我們可以在作用域鏈上傳遞事件:
•使用$emit冒泡事件,事件從當(dāng)前子作用域冒泡到賦作用域,在產(chǎn)生事件的作用域之上的所有作用域都會收到這個事件的通知
$emit()方法帶有兩個參數(shù):
name 要發(fā)出的事件的名稱
args 一個參數(shù)集合,作為對象傳遞到事件監(jiān)聽器上
•使用$broadcast向下傳遞事件,每個注冊了監(jiān)聽器的子作用域都會收到這個信息
$broadcast()方法帶有兩個參數(shù):
name 要廣播的事件的名稱
args 一個參數(shù)集合,作為對象傳遞到事件監(jiān)聽器上
•使用$on監(jiān)聽事件
$on()方法帶有兩個參數(shù):
event 事件對象
param 參數(shù)集合,$broadcast()、$emit()傳遞過來的參數(shù)集合 示例:
demo.html
<!doctype html>
<html ng-app="freefedApp">
<head>
<title>angular應(yīng)用demo</title>
<script src="angular.js"></script>
<script src="app.js"></script>
</head>
<body>
<div ng-controller="freefedCtrl">
<div event-directive change="change(title)"></div>
</div>
</body>
</html>
app.js
/*聲明module*/
var module = angular.module('freefedApp',[]);
/*聲明控制器*/
module.controller('freefedCtrl',['$scope',function($scope){
//監(jiān)聽directiveClick事件
$scope.$on('directiveClick',function(event,param){
console.log( param ); // 打印結(jié)果 {title : '我是來自指令子級作用域'}
});
$scope.change = function(title){
var result = '請注意接收父級廣播';
//向子級作用域廣播parentBroadcast事件
$scope.$broadcast('parentBroadcast',{msg : result});
};
}]);
/*聲明指令*/
module.directive('eventDirective',function(){
return {
scope : {
change : '&'
},
replace : true,
template : '<a>點我向上冒泡事件</a>',
link : function( scope,el,attr ){
el.on('click',function(){
//向上冒泡directiveClick事件,通知父級作用域
scope.$emit('directiveClick',{title : '我是來自指令子級作用域'});
});
//監(jiān)聽parentBroadcast事件廣播
scope.$on('parentBroadcast',function(event,msg){
console.log( msg ); //打印結(jié)果 { msg : 請注意接收父級廣播 }
});
}
};
});
事件對象屬性
$on中的event事件對象屬性如下:
•targetScope(作用域?qū)ο?
發(fā)送或者廣播事件的作用域
•currentScope(作用域?qū)ο?
當(dāng)前處理事件的作用域
•name(字符串)
正在處理事件的名稱
•stopPropagation(函數(shù))
stopPropagation()函數(shù)取消通過$emit觸發(fā)事件的進一步傳播
•preventDefault(函數(shù)) preventDefault()把defaultprevented標志設(shè)置為true,盡管不能停止事件傳播,但是子作用域可以通過defaultprevented標志知道無需處理這個事件
•defaultPrevented(布爾值)
可以通過判斷defaultPrevented屬性來判斷父級傳播的事件是否可以去忽略
以上這篇淺談angularJS中的事件就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
angularJs中orderBy篩選以及filter過濾數(shù)據(jù)的方法
今天小編就為大家分享一篇angularJs中orderBy篩選以及filter過濾數(shù)據(jù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09
Angular.js實現(xiàn)獲取驗證碼倒計時60秒按鈕的簡單方法
最近做項目的時候又遇到了驗證碼倒計時的需求,發(fā)現(xiàn)這個功能還是挺實用的,所以就想著總結(jié)一下,下面這篇文章主要給大家介紹了關(guān)于利用Angular.js如何實現(xiàn)獲取驗證碼倒計時按鈕的簡單方法,需要的朋友可以參考借鑒,下面來一起看看吧。2017-10-10
angularJs中跳轉(zhuǎn)到指定的錨點實例($anchorScroll)
今天小編就為大家分享一篇angularJs中跳轉(zhuǎn)到指定的錨點實例($anchorScroll),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
angular6.0開發(fā)教程之如何安裝angular6.0框架
這篇文章主要介紹了angular6.0開發(fā)教程之如何安裝angular6.0框架,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06
Angular中ng?update命令force參數(shù)含義詳解
這篇文章主要為大家介紹了Angular中ng?update命令force參數(shù)含義詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10

