4

我正在开发一个 Angular 应用程序,它在除 IE8 之外的所有浏览器中都运行良好。IE7 和 IE9 都可以正常工作。

我已经能够确定 angular 的 compileNodes 函数正在无限有效地递归。出于测试目的,我更改了 compileNodes 函数以跟踪深度并在某个阈值处简单地返回,并且我确认这样做可以使页面正确加载和运行,因此显然这种大规模递归对于页面运行来说不是必需的。

显然,这不是解决此问题的可持续方式,所以我想知道,有没有其他人遇到过这种行为,如果是这样,你能找出问题所在吗?

编辑:经过进一步调试,我想我已将其范围缩小到我们正在使用的自定义指令。该指令真的太长了,我无法将它粘贴在这里,但是当我将其缩小到一个确切的部分时,如果我能够找到有代表性的东西,我会发布它。

4

1 回答 1

0

经过更多的挖掘,我能够确定问题的原因,至少足以满足我的目的。

正如我在编辑中提到的,我已将其范围缩小到与名为form-field. 通过一些试验和错误,我还能够确定问题发生在date-picker指令位于元素的子form-field元素上时。

而在大多数地方,这是在做类似的事情

<div form-field>
    <date-picker></date-picker>
</div>

有一次,日期选择器字段使用了一个自动关闭标签

<div form-field>
    <date-picker />
</div>

显然,form-field的编译无法正确处理这个问题并设法进入一个无限循环,我猜它只发生在 IE8 中,因为其他较新的浏览器默默地将自闭标签解释为具有定义的开始和结束标签。

长话短说,我更改了自动关闭标签,现在一切正常。

于 2013-08-27T13:24:33.437 回答