2013-09-03 26 views
7

Tôi đang gặp sự cố khi nhận được html đã biên dịch của một trang trong AngularJS. Dưới đây là các mã:Nhận HTML Biên dịch từ AngularJS

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> 

gì là lạ là trong console.log đầu tiên(), nó cho thấy các dữ liệu thu thập, 7, trong outerHTML tài sản, nhưng khi tôi xuất tất cả .outerHTML, nó hiển thị phiên bản chưa được biên dịch, {{3 + 4}}

+1

Có thể vấn đề với 'console.log' giống như http://stackoverflow.com/a/18597550/1529630 – Oriol

+0

Cảm ơn bạn. Có vẻ như nó trái ngược với vấn đề đó. Đầu ra chính xác chỉ xuất hiện sau khi trang được tải xong, nhưng không hiển thị cho returnString. – James

Trả lời

12

Có vẻ như đó là vấn đề về thời gian. Chờ đợi để xử lý các biên dịchHTML đã làm các trick.

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

    console.log(returnString); 
},0); 
Các vấn đề liên quan