AngularJS實(shí)現(xiàn)給動(dòng)態(tài)生成的元素綁定事件的方法
本文實(shí)例講述了AngularJS實(shí)現(xiàn)給動(dòng)態(tài)生成的元素綁定事件的方法。分享給大家供大家參考,具體如下:
1 . 我們知道在jQuery中,動(dòng)態(tài)生成一個(gè)元素,如果要在動(dòng)態(tài)生成元素的同時(shí),動(dòng)態(tài)綁定事件,可以通過(guò)live/on方法(在jquery3.0中已經(jīng)廢除了bind方法)。
2 . 在AngularJS中,操作DOM一般在指令中完成,事件監(jiān)聽機(jī)制是在對(duì)于已經(jīng)靜態(tài)生成的dom綁定事件,而如果在指令中動(dòng)態(tài)生成了DOM節(jié)點(diǎn),動(dòng)態(tài)生成的節(jié)點(diǎn)不會(huì)被JS事件監(jiān)聽。
舉例來(lái)說(shuō):
angular.module('myapp',[]) .directive('myText',function(){ return{ restrict:'A', template:'<div ng-click="hello()">Hi everyone</div>', link:function(scope,ele,attr){ } } })
這個(gè)指令中,會(huì)生成新的DOM節(jié)點(diǎn):
<div ng-click="hello()">Hi everyone</div>
但是如果不做處理,這里的ng-click事件并不能實(shí)現(xiàn),因?yàn)槭录谋O(jiān)聽在靜態(tài)html頁(yè)面生成時(shí)候已經(jīng)完成。那么如何給動(dòng)態(tài)生成的元素,綁定事件,實(shí)現(xiàn)事件的動(dòng)態(tài)監(jiān)聽呢?
3 . 通過(guò)$compile服務(wù),編譯DOM,實(shí)現(xiàn)動(dòng)態(tài)的事件綁定
var template:'<div ng-click="hello()">Hi everyone</div>', var content = $compile(template)(scope);
通過(guò)這兩句,首先先編譯DOM,然后用編譯后的DOM加入到之前的靜態(tài)節(jié)點(diǎn)中,就能實(shí)現(xiàn)動(dòng)態(tài)綁定事件,之類注意,應(yīng)該注入$compile service
.directive('myText',function($compile){})
完整的代碼如下:
angular.module('myapp',[]) .directive('myText',function($compile){ var template:'<div ng-click="hello()">Hi everyone</div>', return{ restrict:'A', link:function(scope,ele,attr){ ele.on("click", function() { scope.$apply(function() { var content = $compile(template)(scope); element.append(content); }) }); } } })
更多關(guān)于AngularJS相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《AngularJS入門與進(jìn)階教程》及《AngularJS MVC架構(gòu)總結(jié)》
希望本文所述對(duì)大家AngularJS程序設(shè)計(jì)有所幫助。
相關(guān)文章
Angular學(xué)習(xí)筆記之集成三方UI框架、控件的示例
這篇文章主要介紹了Angular學(xué)習(xí)筆記之集成三方UI框架、控件的示例,詳細(xì)的介紹了Material UI、Ag-grid等框架,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03詳解基于Bootstrap+angular的一個(gè)豆瓣電影app
本篇文章主要介紹了基于Bootstrap+angular的一個(gè)豆瓣電影app ,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-06-06如何處理Angular?錯(cuò)誤消息ERROR?Error?NullInjectorError?No?provid
這篇文章主要介紹了如何處理Angular?錯(cuò)誤消息ERROR?Error?NullInjectorError?No?provider?for?XX2023-07-07詳解AngularJS跨頁(yè)面?zhèn)髦担╱i-router)
本篇文章主要介紹了詳解AngularJS跨頁(yè)面?zhèn)髦担╱i-router),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08淺談Angular2 ng-content 指令在組件中嵌入內(nèi)容
本篇文章主要介紹了淺談Angular2 ng-content 指令在組件中嵌入內(nèi)容,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08AngularJS實(shí)現(xiàn)多級(jí)下拉框
這篇文章主要為大家詳細(xì)介紹了AngularJS實(shí)現(xiàn)多級(jí)下拉框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03AngularJS創(chuàng)建一個(gè)上傳照片的指令實(shí)例代碼
這篇文章主要介紹了AngularJS創(chuàng)建一個(gè)上傳照片的指令實(shí)例代碼,需要的朋友可以參考下2018-02-02Angular ui.bootstrap.pagination分頁(yè)
這篇文章主要為大家詳細(xì)介紹了Angular ui.bootstrap.pagination 分頁(yè)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01