奇怪的事发生在我身上。 AngularJS
项目在IE9
中正常,但在Chrome
35.0.1916.153
中无效。然后我开始调试Angularjs的源代码,发现' replace '代码返回不同结果的问题:
html.replace(XHTML_TAG_REGEXP, "<$1></$2>")
(我正在使用的版本的Angularjs源代码的第2266行)
这在IE
中正常运行,但在Chrome
中有误。
有没有人遇到过这个问题?
UPDATE1:
对不起家伙们,当我缩小问题的范围时,它实际上并不在“替换”代码中。它发生在
tmp.innerHTML = 'my directive html template'.
我的模板是这样的:
<table>
<thead>
<matrixheader>
</matrixheader>
</thead>
<tbody>
<matrixrows>
</matrixrows>
</tbody>
</table>
'matrixheader'和'matrixrows'是2个指令,我用它们动态创建表列标题和表行。
当AngularJS将此模板分配给tmp.innerHTML时,在此分配后的IE中,template.innerHTML就是这样,但在Chrome中它将变为:
<matrixheader>
</matrixheader>
<matrixrows>
</matrixrows>
<table>
<thead>
</thead>
<tbody>
</tbody>
</table>
然后Angularjs将抛出异常:
Error: [$compile:tplrt] Template for directive 'matrix' must have exactly one root element. partials/matrix.html