5

我有一个角度脚本,它在 $rootScope 上广播一个事件(使用 $$broadcast)。我使用的角度版本是 1.1.4

在某些情况下,这会在 Angular 代码中引发异常:

未捕获的类型错误:无法读取 null 的属性“$$nextSibling”。

有没有人知道可能导致此错误的原因?不幸的是,发生此错误的代码太大了,但也许有人可以指出我正确的方向?

它发生的角度代码是:

   // Insanity Warning: scope depth-first traversal
      // yes, this code is a bit crazy, but it works and we have tests to prove it!
      // this piece should be kept in sync with the traversal in $digest
      if (!(next = (current.$$childHead || (current !== target && current.$$nextSibling)))) {
        while(current !== target && !(next = current.$$nextSibling)) {

在 while 语句上

更新:广播是从外部组件上的单击事件内部执行的,单击事件是外部组件的配置对象的属性。

4

2 回答 2

12
$timeout(function(){
    //do stuff
});

$timeout没有等待时间也可以。

于 2013-09-19T15:44:20.070 回答
-2

问题在于在作用域上使用或不使用 $$apply。有时我需要在我已经处于申请阶段的其他场合使用 $$apply ...... Sp 我最终实现了 safeApply (在互联网上的某个地方找到)。想知道为什么这不是用 Angular 实现的标准,因为它实现起来非常简单,而且它简化了编码

于 2013-04-14T17:45:13.077 回答