国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

Angularjs 動態添加指令并綁定事件的方法

2024-05-06 15:18:29
字體:
來源:轉載
供稿:網友

這兩天學習了angularjs 感覺指令這個地方知識點挺多的,而且很重要,所以,今天添加一點小筆記。

先說使用場景,動態生成DOM元素并綁定事件,非常常見的一種場景,用jq實現效果:

var count=0;$("#test").on("click",function(event){ if(event.target.tagName.toLowerCase()=="input") return; count++; var html="<input type='text' class='newEle' value='"+count+"'/>"; $(this).html(html); $(".newEle").focus();});$("body").on("blur",".newEle",function(){ alert($(this).val());})

如果用angularjs應該怎么實現呢?想當然的情況是這樣的:

var myApp = angular.module('myApp', []);    myApp.controller('MainCtrl', ['$scope','$compile',function($scope) {      $scope.count = 0;      $scope.add = function() {       if(event.target.tagName.toLowerCase()=="input")return;        var target=$(event.target);        $scope.count++;        target.html("<input value='"+$scope.count+"' ng-blur='showValue()'>" );      }      $scope.showValue=function(){        alert(event.target.value)      }    }])

理想很豐滿,點擊test的時候內容確實變成了input,但是input不能綁定任何ng事件。

var myApp = angular.module('myApp', []);    myApp.controller('MainCtrl', ['$scope','$compile',function($scope, $compile) {      $scope.count = 0;      $scope.add = function() {       if(event.target.tagName.toLowerCase()=="input")return;        var target=$(event.target);        $scope.count++;        target.html($compile("<input value='"+$scope.count+"' ng-blur='showValue()'>")($scope));      }      $scope.showValue=function(){        alert(event.target.value)      }    }])

達到目的~

這里用到了$compile服務,官方的解釋是compile可以將一個HTML字符串或者DOM編譯成模板,該模板能夠與scope鏈接起來,也就是說直接插入一段html片段到頁面中,雖然能插入進去,但是angular并沒有編譯,所以任何ng事件指令綁定都是無效的,通過compile能夠將html片段先編譯后再插入。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持錯新站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 碌曲县| 绩溪县| 师宗县| 庄浪县| 闸北区| 茶陵县| 巴中市| 定州市| 蕲春县| 阿坝县| 盈江县| 邢台市| 温宿县| 崇明县| 南康市| 夏邑县| 蓬溪县| 濮阳市| 界首市| 金门县| 历史| 盈江县| 阜阳市| 达州市| 霞浦县| 邵武市| 吉隆县| 凉山| 句容市| 红原县| 商水县| 永康市| 漠河县| 宝应县| 延长县| 富顺县| 华亭县| 吴忠市| 清徐县| 济源市| 莱西市|