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

首頁 > 編程 > JavaScript > 正文

AngularJS初始化靜態模板詳解

2019-11-20 10:48:23
字體:
來源:轉載
供稿:網友

AngularJS可以通過ng-app來自動初始化模塊,也可以通過angular.bootstrap(document, [module])手動啟動應用,不管用哪種方法,應用啟動后,動態往dom樹里面添加的dom元素,無法執行angular指令,即無法通過ng-model、ng-click給動態添加的dom元素綁定數據和事件,怎么辦?

動態添加dom元素的場景非常常見,如點擊某頁面上修改用戶資料的按鈕,發送ajax請求去查詢用戶資料,然后通過模板引擎將事先寫在頁面里的靜態模板編譯成HTML字符串,最后將HTML字符串append到頁面顯示出來,一般情況下我們會這樣做:

<!DOCTYPE html><html ng-app="app"><head>  <title>demo</title>  <meta charset="utf-8"/>  <script src="http://cdn.bootcss.com/jquery/3.0.0-alpha1/jquery.min.js"></script>  <script id="others_angular_103" type="text/javascript" class="library" src="http://sandbox.runjs.cn/js/sandbox/other/angular.min.js"></script>  <style>    .contani{      width: 100%;      height: 300px;      border: 1px solid red;    }  </style></head><body ng-controller="myCtrl"><script>  var app = angular.module('app',[]);  app.controller('myCtrl', ['$scope','$compile',function(scope,$compile){    scope.valchange = function(){      console.log('value change')    }    scope.edit = function(){      //假設這是ajax返回的數據      scope.username = 'wangmeijian';      scope.password = '000000';      $(".contani").html(myTmpl.innerHTML);    }  }])</script><button ng-click="edit()">修改資料</button><div class="contani"></div><script type="text/html" id="myTmpl">  <form>    用戶名:<input type="text" ng-model="username" />    密碼:<input type="text" ng-model="password" />  </form></script></body></html>

點擊修改資料按鈕,新插入的dom元素并沒有綁定ajax返回的數據,這是因為點擊按鈕前angular已經初始化完畢了,解決辦法當然不是再初始化一次,而是單獨使用$compile編譯靜態模板的HTML,然后再插入dom樹中

<!DOCTYPE html><html ng-app="app"><head>  <title>demo</title>  <meta charset="utf-8"/>  <script src="http://cdn.bootcss.com/jquery/3.0.0-alpha1/jquery.min.js"></script>  <script id="others_angular_103" type="text/javascript" class="library" src="http://sandbox.runjs.cn/js/sandbox/other/angular.min.js"></script>  <style>    .contani{      width: 100%;      height: 300px;      border: 1px solid red;    }  </style></head><body ng-controller="myCtrl"><script>  var app = angular.module('app',[]);  app.controller('myCtrl', ['$scope','$compile',function(scope,$compile){    scope.valchange = function(){      console.log('value change')    }    scope.edit = function(){      //假設這是ajax返回的數據      scope.username = 'wangmeijian';      scope.password = '000000';      //$(".contani").html(myTmpl.innerHTML);      $(".contani").append( $compile(myTmpl.innerHTML)(scope) )    }  }])</script><button ng-click="edit()">修改資料</button><div class="contani"></div><script type="text/html" id="myTmpl">  <form>    用戶名:<input type="text" ng-model="username" ng-change="valchange()" />    密碼:<input type="text" ng-model="password" ng-change="valchange()" />  </form></script></body></html>

以上就是關于AngularJS初始化靜態模板的詳細介紹,希望對大家的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丁青县| 芒康县| 丹江口市| 上思县| 拜泉县| 宝山区| 宣汉县| 永丰县| 洱源县| 金湖县| 平湖市| 凌源市| 汝城县| 洛南县| 互助| 丽水市| 招远市| 光泽县| 台前县| 宁阳县| 醴陵市| 建湖县| 阜新| 象州县| 亳州市| 偏关县| 宁陕县| 大洼县| 乳源| 鸡西市| 普兰店市| 白河县| 盐津县| 黄骅市| 闽清县| 吴江市| 海盐县| 舒兰市| 玉树县| 佳木斯市| 时尚|