当我销毁自己的示波器时,我的程序中一直出现此错误。我在角度范围内追踪到了这个while循环:
if (!(next = (current.$$childHead || (current !== target && current.$$nextSibling)))) {
while(current !== target && !(next = current.$$nextSibling)) {
current = current.$parent;
}
}
我还设法在jsFiddle中复制它:http://jsfiddle.net/kEyqz/1/
这很容易设置,在一个元素上我点击一个点击事件然后$广播它被点击后跟$ apply。
在一个单独的指令(带有子范围)中,我会监听该事件,如果我看到它,我会破坏子范围。这样做会产生错误:
Uncaught TypeError: Cannot read property '$$nextSibling' of null
这只是我在代码中尝试完成的一个小例子。
控制台记录在current = current之前。$ parent导致范围没有$ parent(设置为null)。
我可以添加以下行:
if(!current){
break;
}
在当前=当前。$ parent之后,但如果我切换角度版本(不理想),我必须维护它
答案 0 :(得分:22)
这是你在寻找http://jsfiddle.net/jw99Lj7t/吗?
您$destroy
durgin $scope
周期digest
导致了错误。
我不相信这是bug
,因为这是digest
周期的实现方式(它会在$scopes
列表中循环检查是否有变化,我们可以不要删除该列表中的范围,因为它“已在使用中”。)
解决这个问题可能会带来很多复杂性,因为digest
必须非常快,所以最好只为你正在做的事情找到一种不同的方式。