我有一个非常简单的指令,我想从单独的HTML文件加载模板。我希望HTML替换指令,因此我将replace: true
属性添加到指令中。但是,当我这样做时,模板根本不包括在内。
我已经创建了jsFiddle,您可以在其中看到此内容。如果您使用Firebug或其他东西来检查DOM,您可以看到,当它仅使用template
属性时,它会替换元素。如果您取消replace: true
,您可以看到templateUrl
上的HTML附加到foo元素。但是,只要我将replace: true
添加到templateUrl
,我在DOM中看到的只是<foo></foo>
。
有什么理由你不能一起使用这两个属性?我不是一个使用javascript的专家,所以任何关于这里发生的事情的信息都将非常感激。
答案 0 :(得分:34)
确保templateUrl
中html的内容只包含一个根元素。这在replace: false
时不是问题,但在replace: true
时出现问题,您将看到此控制台错误(使用FireBug):
Error: Template must have exactly one root element.
这是jsFiddle of it not working(带有两个根元素),另一个带有working。
答案 1 :(得分:2)
好问题。如果我没弄错的话,你想用“transclude”
http://jsfiddle.net/dandoyon/AsVp8/1/
Transclude允许您将模板与HTML中的模板混合。您可能希望再次浏览文档并查找此选项。
喝彩!