无法读取属性'$$ nextSibling'的null

时间:2013-09-06 15:02:30

标签: angularjs

当我销毁自己的示波器时,我的程序中一直出现此错误。我在角度范围内追踪到了这个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之后,但如果我切换角度版本(不理想),我必须维护它

1 个答案:

答案 0 :(得分:22)

这是你在寻找http://jsfiddle.net/jw99Lj7t/吗?

$destroy durgin $scope周期digest导致了错误。

我不相信这是bug,因为这是digest周期的实现方式(它会在$scopes列表中循环检查是否有变化,我们可以不要删除该列表中的范围,因为它“已在使用中”。)

解决这个问题可能会带来很多复杂性,因为digest必须非常快,所以最好只为你正在做的事情找到一种不同的方式。