2013-09-03 8 views
7

AngularJSでページのコンパイル済みHTMLを取得するのに問題があります。ここでは、コードがあります: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}}

+1

たぶんconsole.log' 'の問題はhttp://stackoverflow.com/a/18597550/1529630 – Oriol

+0

おかげと同じです。それはその問題の反対だったように見えます。正しい出力は、ページのロードが完了した後にのみ表示され、returnStringでは表示されませんでした。 – James

答えて

12

というタイミングで問題が発生しているように見えます。コンパイルされたHTMLを処理するのを待っていたのは、そのトリックでした。

$timeout(function(){ 
    var returnString = ''; 
    for(i=0; i<compiledHTML.length; i++) 
     returnString += compiledHTML[i].outerHTML; 

    console.log(returnString); 
},0); 
関連する問題