AngularJS-为什么不;t替换:true使用templateUrl属性

AngularJS - Why doesn't replace: true work with templateUrl property?

本文关键字:true 使用 templateUrl 属性 替换 为什么不 AngularJS-      更新时间:2023-09-26

我有一个非常简单的指令,我想从一个单独的HTML文件加载模板。我希望HTML替换该指令,因此我将replace: true属性添加到该指令中。然而,当我这样做时,模板根本不会被包括在内。

我创建了一个jsFiddle,您可以在其中看到它。如果您使用Firebug或其他东西来检查DOM,您可以看到,当它只使用template属性时,它确实会替换元素。如果去掉replace: true,您可以看到templateUrl处的HTML被附加到foo元素。然而,当我将replace: truetemplateUrl相加时,我在DOM中看到的只是<foo></foo>

你不能同时使用这两个属性是有什么原因的吗?我还不是javascript方面的专家,所以如果能提供任何关于这里发生的事情的信息,我将不胜感激。

确保templateUrl中html的内容只有一个根元素。这在replace: false时不是问题,但在replace: true时会成为问题,您将看到此控制台错误(与FireBug一起):

Error: Template must have exactly one root element.

这里有一个jsFiddle,它不工作(有两个根元素),另一个工作。

好问题。如果我没有错的话,你想使用"transclude"

http://jsfiddle.net/dandoyon/AsVp8/1/

Transclude允许您将模板与HTML中的内容混合。您可能想再看一眼文档,然后查找此选项。

欢呼!