directive中写template遇见的问题
记录一下先前在写指令时,遇到的一个令人无语的错误,避免以后重犯。
错误的代码:
1
2
3
4
5
6
7
|
app.directive( ' ckqlnfo' ,[function(){
return {
restrict: ' AE '
replace: true,
template : '<p>模板</p><p>模板</p> '
}
}
|
首先看看指令中template的值<p>模板</p><p>模板</p>
,这段看起来并没有什么错,但是在实际运行中会造成程序抛出异常,因为这段html代码有两个p节点,在Angular解析这个指令的时候,不知道应该解析template所标注的哪一个p节点。
正确的代码:
1
2
3
4
5
6
7
|
app.directive( ' ckqlnfo' ,[function(){
return {
restrict: ' AE '
replace: true,
template : '<div><p>模板</p><p>模板</p></div>'
}
}
|
这段代码中我们为template模板代码中添加了一对div
标签,这样就能被Angular正确的解析了,因为模板有了一个明确的渲染开始和结束。
温馨提示:
上面的指令我们使用了template
直接以字符串的形式编写模板,有时候我们的模板代码较多,会使用templateUrl
引用一个新的html模板文件。
看下面的两个模板代码:
*模板A*:
1
2
3
4
5
|
<!--这是模板A的注释-->
<div>
<p>模板</p>
<p>模板</p>
</div>
|
*模板B*:
1
2
3
4
5
|
<div>
<!--这是模板B的注释-->
<p>模板</p>
<p>模板</p>
</div>
|
告诉你们真相:注释也是一个节点元素,也会被解析……
别问我怎么知道的,也别问我静静是谁…