2017-02-23 50 views
-1

對不起,以前的問題格式不好。改變這種現在編譯字符串htmlusing角度編譯無法使用ng-repeat在它

我有使用ngrepeat渲染所需的div一個html字符串..

var templateHTML = "<div ng-repeat='entity in createCtrl.finalCCList'>\ 
         <span>{{entity.name}}</span>\ 
        </div>"; 

這裏「createCtrl.finalCCList」具有其中有名稱和ID屬性的實體對象的列表在裏面。 現在,當我嘗試編譯這使用 -

var compiledTemplateHTML = $compile(templateHTML)($scope); 
      if (compiledTemplateHTML && compiledTemplateHTML[0]) { 
       return compiledTemplateHTML[0].outerHTML; 
      } 
      else { 
       return ""; 
      } 

我什麼也沒得到。而我檢查和$ scope.createCtrl.finalCCList具有所需的值。

我在這裏丟失了什麼。

+1

爲了幫助你,一些代碼會真的很感謝:)到目前爲止你做了什麼?你的指令代碼是什麼?和HTML?你如何使用該指令? – lealceldeiro

+0

@AsielLealCeldeiro立即更新。對於那個很抱歉。 – OLDRomeo

+0

目前還不清楚你在這裏要做什麼。首先,你爲什麼要使用'$ compile'?這樣做的原因很少,而且幾乎總是更好的方式來構建代碼。其次,我不認爲'$ compile'返回一個數組.... – Claies

回答

0

好的。經過大量研究,我認爲問題是在編譯需要時間之後,由字符串html中的ng-repeat呈現的DOM,並且在完成之前將其分配。如果我在超時使用分配它工作正常。

所以不是這個 -

var compiledTemplateHTML = $compile(templateHTML)($scope); 
     if (compiledTemplateHTML && compiledTemplateHTML[0]) { 
      return compiledTemplateHTML[0].outerHTML; 
     } 
     else { 
      return ""; 
     } 

我不回來,但在$超時分配給範圍

var compiledTemplateHTML = $compile(templateHTML)($scope); 
     if (compiledTemplateHTML && compiledTemplateHTML[0]) { 
      $timeout(function() { 
       createCtrl.isHeaderContent = compiledTemplateHTML[0].outerHTML; 
      }, 0); 
     } 

感謝。