我在AngularJS中获取页面的编译html时遇到了麻烦.这是代码:
JS:
<script src="http://code.angularjs.org/1.2.0rc1/angular.min.js"></script> <script> var app = angular.module('main',[]); app.directive("compile",['$compile',function ($compile) { return { link: function(scope,elem,attr){ var compiledHTML = $compile(elem.contents())(scope); console.log(compiledHTML); var returnString = ''; for(i=0; i<compiledHTML.length; i++) returnString += compiledHTML[i].outerHTML; console.log(returnString); } }; }]); </script>
HTML:
<html ng-app="main" compile> <body> {{3 + 4}} </body> </html>
奇怪的是在第一个console.log()中,它在outerHTML属性中显示已编译的数据7,但是当我输出所有的.outerHTML时,它显示了未编译的版本,{{3 4}}
解决方法
看起来这是一个时间问题.等待处理编译的HTML做了伎俩.
$timeout(function(){ var returnString = ''; for(i=0; i<compiledHTML.length; i++) returnString += compiledHTML[i].outerHTML; console.log(returnString); },0);