我将jQuery与Angular的$digest方法一起使用时缺少什么?



我在使用Angular's Digest循环的jQuery了解

很难理解。

我正在使用ng-repeat =加载内容。内容(使用$ compile)最终与两个儿童divs和几个孙子元素成为DIV。加载了NG重复的载体后,我想使用jQuery的孩子。

callBack = function(index) {
    var objParent = $('#' + $scope.panes[index].windID); //entire window
    var objChild = [];
    //objChild[0] = title bar
    //objChild[1] = contentpane
    objParent.children().each(function(i){
        objChild[i] = $(this);
    });
    //more code
} 

问题在于,随着我的打开窗口方法具有更大的功能,某种程度上,Angular's Digest开始工作不同。我的意思是,在添加最大化/还原/最小化方法和按钮以匹配之前,当我的控制器到达上方代码时,窗口已经通过范围消化并显示在DOM中(尽管隐藏在{display:none}中,对于jQuery的淡入淡出),这意味着上述代码有效。

但是,现在还有更多的消化,当它到达那个点时,摘要还不完整,并且孩子查找器失败了,因为该DOM尚未更新。我必须使用$超时,并且越来越需要增加时间。我现在必须等待600毫秒左右,我觉得这是从图标单击到显示窗口的速度。

现在,如果我在$ timeout()之前添加$ scope。我可以减少回到0ms的时间,一切都可以立即奏效。但是我会发现正在进行的摘要错误。我以为$超时等待了消化的结尾?

我已经尝试了各种方法,甚至是$$ Postdigest,但是似乎有效的唯一作用是迫使$申请,导致最终用户永远不会看到甚至关心的摘要错误,因为它实际上使一切都起作用。那不是我这么多的问题,但是它使我感到困扰,因为打开和关闭窗口后,"刷"了摘要的摘要可能会在控制台中繁殖。

这是一个旧版本的链接:Akadinewebos

该应用程序比Angular更具jQuery,我只是在使用Angular作为HTTP模块,并且可以轻松推动和拼接我的窗口阵列,并让NG-Repeat Magic处理DOM。jQuery通过拖动,调整大小,淡入淡入/淡出,将窗户居中,大多数其他所有东西都可以完成所有繁重的举动。

所以这是我的问题:有人可以向我解释一下我对Angular Digest的工作方式所缺少的东西吗?

正如Claise所说,jQuery并不像Angular一样。实际上,我只需要将$ timeout()更改为一个普通的ol'Settimeout(),基本上是我的jQuery回调。现在效果很好!

最新更新