17

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

我创建了一个jsFiddle,您可以在其中看到它。如果您使用 Firebug 或其他工具来检查 DOM,您可以看到当它仅使用template属性时,它确实替换了元素。如果您取消,您可以在附加到 foo 元素replace: true处看到 HTML 。templateUrl但是,一旦我添加了replace: truetemplateUrl我所看到的只是<foo></foo>在 DOM 中。

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

4

2 回答 2

34

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

Error: Template must have exactly one root element.

这是一个不工作的 jsFiddle (有两个根元素)和另一个工作的 jsFiddle 。

于 2012-07-11T17:33:44.227 回答
2

好问题。如果我没记错的话,你想使用“transclude”

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

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

干杯!

于 2012-07-11T17:03:07.173 回答