1

ディレクティブ内でコンパイルされた HMTL-as-a-string を使用して、ループで一連のものをレンダリングするディレクティブを持つパーシャルがあります。この HTML-as-a-string 自体には、ng-includeレンダリングされない が含まれています。

私のjsfiddleの例を見てください

基本的に、これには含まれませんtemplate2.html

element.html('<span>The name is ' + scope.content.name + '!</span><div ng-include src="template2.html"></div><br>');

どんなポインタでも大歓迎です。

ありがとう!

4

2 に答える 2

4

ワーキングデモ

次のように書く必要があるだけです

src=" \'template2.html\'"


var linker = function(scope, element, attrs) {
    element.html('<span>The name is ' + scope.content.name + '!</span><div ng-include src=" \'template2.html\'"></div><br>');
    $compile(element.contents())(scope);
};

詳細についてはDOCSをご覧ください

于 2013-09-30T15:15:36.397 に答える
3

上記の Vinod の回答 ( に置き換えsrc="template2.html"ますsrc="\'template2.html\'") は正しいですが、リンク関数内で自分でテンプレートを手動でコンパイルするのではなく、実際のテンプレートを使用することをお勧めします。あなたの例では、実際には双方向バインディングの利点を享受していません。コンパイル関数の html 出力を取得しているだけで、基になるデータが変更されても更新されません。バインディング(および Vinod のテンプレート修正)を示すために変更された例を次に示します。

http://jsfiddle.net/kf3vZ/5/

チェックボックスのいずれかの値を変更しても、ディレクティブの値は変更されないことに注意してください。

template次に、ディレクティブへの引数を使用したバージョンを示します。

http://jsfiddle.net/kf3vZ/7/

テキスト フィールドを変更すると、ディレクティブの値も変更されます。

もう 1 つの注意点として、既にテンプレートのタグを使用しているため、ディレクティブをスクリプト テンプレートの に置き換えて提供するscriptことができます。templatetemplateUrlid

于 2013-09-30T15:29:04.480 に答える