2016-05-02 7 views
0

HTMLを角でコンパイルすると、DOM要素の内容をコンパイル済みのHTMLに置き換えるにはどうすればよいですか?例:要素の値をコンパイル済みのHTMLに置き換えるには

var html = "<div>{{msg}}</div>"; 
var scope = $scope.$new(); 
var scope.msg = "Hello World!"; 
var linkFn = $compile(html); 
var contents = linkFn(scope); 

element.replaceContents(contents);//what is the actual syntax for this? 

答えて

1

要素からコンテンツを削除し、新しくコンパイルした内容を追加します。

element.empty().append(contents) 
+0

おかげです。残念ながら、私が持っている要素は、角要素ではなくD3要素であるようです。 D3要素は 'empty()'関数を持っていないようです。この場合の代替案は何か分かりますか? –

+0

ディレクティブの中にいる場合、生のHTML要素にアクセスする必要があります。私が正しくリコールすれば、D3は生のHTML要素を提供します。あなたは '$(element).empty()。append(contents)'を試しましたか? – ArcSine

+0

それもうまくいきませんでした。実際に私は間違っていました。要素が実際にコードの中で 'element = document.createElement( 'i');'として定義されていることが分かります。その場合、私は何をする必要があるのか​​? –

0

純粋-javascriptの方法がelement.innerHTML = contents;

+0

これを行うと、innerHTMLはDOMフラグメントを文字列に変換して(バインディングを削除するため)角度結合を削除します。 DOMフラグメント( '$ compile'が生成するもの)を保持しておくと、すべてのバインディングが保持されます。 – ArcSine

+1

ありがとう、私は何か新しいことを学んだ。私の答えは削除されます。 –

関連する問題