2017-02-23 3 views
-1

前に間違った質問形式のため申し訳ありません。ここでコンパイルする文字列htmlusing角度コンパイルではng-repeatが機能しません

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

..私は必要なのdivをレンダリングするためにngrepeatを使用してHTML文字列を持っているこの今

を変更する「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が問題であるとわかりました。そして、完了する前にそれを割り当てています。タイムアウトで割り当てを使用する場合、正常に動作します。

ので、代わりのthis-

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); 
     } 

感謝を割り当てます。

関連する問題