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

首頁 > 編程 > JavaScript > 正文

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

2019-11-19 16:50:13
字體:
來源:轉載
供稿:網友

這兩天學習了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片段先編譯后再插入。

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 双牌县| 新闻| 西乌| 三江| 余干县| 玉环县| 河曲县| 通渭县| 社会| 北宁市| 大埔县| 临潭县| 富宁县| 雷波县| 平山县| 清水河县| 枞阳县| 蒲城县| 连平县| 湟源县| 乾安县| 三河市| 新源县| 景德镇市| 精河县| 集安市| 济阳县| 武汉市| 莲花县| 天全县| 琼结县| 贡觉县| 安西县| 上饶市| 南陵县| 沾化县| 大化| 阿拉尔市| 永年县| 阿拉善右旗| 中西区|