【发布时间】:2015-10-19 17:09:17
【问题描述】:
我正在尝试遵循 Angular 最佳实践建议并使用指令来 封装可重用的 HTML 元素。 错误信息:
错误:模板必须只有一个根元素。是:partials/user/path/to/somedata.html
指令代码:
.directive('stDirectivename', function() {
return {
restrict: 'E',
replace: true,
// transclude: false,
template: 'partials/user/path/to/somedata.html'
};
})
还有模板:
<div ng-show="person.condition" class="someclass">
<span class = "personRoi">
<i class="anotherclass " ng-class="{'specialclass1': person.count>=0,'specialclass2':person.count<0}">
</i>{{person.somedata}}%
</span>
</div>
在部分(它是模态的模板)中调用为:<st-directivename></st-directivename>
当我将模板 url 替换为指令中的简单 html 字符串时。一切正常。不幸的是,对于涉及' 和“ 的真实模板,我不能这样做。除了这个解决方案不会扩展到更大的模板我计划一些指令。
此外,当我只插入模板 html 而不是指令标记时,一切正常(我实际上是从现有 html 中提取代码以使其可重用)。
我在其他 SO 问题中读到,这与模板中有额外的空间/标签/cmets 有关。但我就是找不到这样的元素。
有人知道解决方案吗?我很乐意为您提供任何帮助。
【问题讨论】:
-
1) 模板文件不能有前导或尾随空白字符(包括换行符)。 2)您粘贴的模板缺少结束
</div>(并包含前导空格)... -
@J.Bruni 抱歉,这只是一个 SO 单,现在已修复以显示模板,div 已关闭且没有前导空格
-
Trailing 在模板中也会产生这个错误,我发现了。
-
@J.Bruni 说得对!我只是浪费了大量时间尝试各种解决方案,而我所要做的就是从指令 html 中删除一些 html cmets ....uggg!
标签: angularjs angularjs-directive