Javascript AngularJS-为什么不';t replace:true使用templateUrl属性工作?

Javascript AngularJS-为什么不';t replace:true使用templateUrl属性工作?,javascript,angularjs,Javascript,Angularjs,我有一个非常简单的指令,我想从一个单独的HTML文件加载模板。我希望HTML替换指令,因此我将replace:true属性添加到指令中。但是,当我这样做时,模板根本没有被包括在内 我已经创建了一个你可以看到这个的。如果您使用Firebug或其他东西来检查DOM,您可以看到,当它仅使用模板属性时,它确实替换了元素。如果去掉replace:true,您可以看到templateUrl中的HTML被附加到foo元素。但是,只要我将replace:true添加到templateUrl,我所看到的就是DOM

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

我已经创建了一个你可以看到这个的。如果您使用Firebug或其他东西来检查DOM,您可以看到,当它仅使用
模板
属性时,它确实替换了元素。如果去掉
replace:true
,您可以看到
templateUrl
中的HTML被附加到foo元素。但是,只要我将
replace:true
添加到
templateUrl
,我所看到的就是DOM中的


有什么原因不能同时使用这两个属性吗?我远不是javascript方面的专家,因此非常感谢您提供有关这里发生的事情的任何信息。

好问题。如果我没弄错的话,你想用“转移”

Transclude允许您将模板与HTML中的内容混合。您可能希望再次浏览文档并查找此选项


干杯

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


这里是它的一个jsFiddle(有两个根元素)和另一个。

如果我没有弄错的话,transclude不就是让您将标记的内容放入最终结果吗?这不是我想要的。我只想我的标签完全替换为模板中的内容。在我的JSFIDLE中,诸如此类的部分只是为了确保标记的这一部分在最终结果中消失。好的(我认为这是你以前的)工作,并取代现有的。我错过什么了吗?您使用的是哪种浏览器?IE确实需要特别的考虑。IE需要发生什么事。如果这就是问题所在,请告诉我。我为angular ui写了一些东西,以支持我们的指令。问题在于已注释掉的templateUrl属性。我没有办法让JSFIDLE访问我的本地html文件,所以我只放了一些它可以访问的URL。根据Gloopy提到的信息,我能够找出是我的根级别div之外的注释导致了问题。我无法完全理解这一点,但最终它对我起了作用。我在chrome浏览器上运行了您的示例,发现了下一个错误:
error:Template必须只有一个根元素。was:…
您的模板可能有问题。您的错误告诉我,要么您的模板顶部有错误(您不应该有错误),要么浏览器无法访问模板并返回404消息,顶部有错误。我的html文件在我的根级别元素之外有一些注释。我认为注释是好的,但是当我删除所有外部注释并且只有一个外部div时,它工作得很好。谢谢有人使用过表行标记吗?如果将工作示例替换为tr td,它将停止工作…@toxaq对于表行标记,我将“E”类型指令切换为“A”类型指令。查看是否正在使用表
Error: Template must have exactly one root element.