2017-01-20 14 views
0

私はいくつかのテンプレートを私のDBからいくつかのデータを使用している角$コンパイルを使用しています。私はそれをユーザーに表示し、後でそれをデータベースに保存するためにiframeの中に挿入する必要があります。角度コンパイルHTMLと変更を防ぐ

私の問題は、テンプレートをスコープの外に出すと、コンテンツをバインドしてその中に配置されたデータが消えてしまうことです。バインドされたデータを保持するためには何が必要ですか?

新しいスコープを作成して既存のスコープを使用しようとしましたが、どちらの場合も失敗します。私は、コンテンツをコンパイルどこ

これは、次のとおりです。

//Method is called by the user 
$scope.mountTemplate = function() { 

    //Load the template the user chose before 
    TemplateLoader.getTemplate($scope.modelTemplate.template + '.html').then(function(responseTemplate) { 

     //Load the template the user chose before, here i just read the html from a file 
     loadRegisters(url, $scope.formContentData.selected, append) 
      .then(function(response) { 
       $scope.itensTemplate = response.map(function(elem) { return configRegisters(elem); }); 

       var compiledHTML = $compile(responseTemplate)($scope); 

       //Here the data appears 
       $('#divVisualizer').append(compiledHTML); 

       $timeout(function() { 
        //At this point, when i log it the ng-repeat and other binded data disappears 
        console.log('compiledHTML', compiledHTML); 
       }, 1000); 

       //At this point, when i place it inside the iframe the ng-repeat and other binded data disappears 
       $scope.trustedHTML = compiledHTML; 
      }, function(response) { 
       console.log('response', response); 
      }); 
    }, function(response) { 
     console.log(response); 
    }); 
} 

は私がバインドさのデータを保つために何をすべき?また、私はコンパイルの応答を文字列にする必要があります、それはオブジェクトとして戻ってきます。どうすれば変換できますか?

EDIT

私のアプリが何をするのか明確にする:私は、ユーザーがこれらのレジスタで満たされるように、その後それが保存されているデータベースやテンプレートからいくつかのレジスタを選択するニュースレタービルダーを構築しますよDBは後で電子メールで送信されます。

+0

を移入私の問題を解決するために管理していますか? –

+2

DOMを使って遊びたいときは、角度で使われているディレクティブの概念を使うべきです。 –

+0

loadRegistersは、ユーザーがテンプレートの生成を選択したときに呼び出される別のスコープメソッドの内部にあります。私は、ページ上に配置されたテンプレートを本当に必要としないので、このディレクティブを使用することはできません。データベースに保存する必要があります。 – Terkhos

答えて

0

私は、サービスとディレクティブで作業しても負荷を助けるために延期使って、このloadRegistersを呼ぶんどのデータ

関連する問題