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\'")是正确的,但我建议使用实际模板而不是自己在链接函数中手动编译模板。在您的示例中,您实际上并没有获得双向绑定的好处。您只是获取 compile 函数的 html 输出,如果基础数据发生更改,它将永远不会更新。这是修改后的示例以显示绑定(和 Vinod 的模板修复):

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

请注意,如果您更改任何复选框的值,指令中的值不会更改。

现在这是一个使用template指令参数的版本:

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

现在,如果您更改文本字段,指令值也会更改。

另请注意,由于您已经在使用script模板的标签,您可以template在指令中替换templateUrl并提供id脚本模板的 。

于 2013-09-30T15:29:04.480 回答