2016-06-17 38 views
0

我無法理解在Angular的摘要循環中使用jQuery。

我正在使用ng-repeat =加載內容。內容(使用$ compile)最終成爲與兩個子div和多個孫子元素的div。加載arrary爲NG-重複後,我想用jQuery的children.each()像這樣:

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 
} 

的問題是,作爲我打開的窗口方法具有更多功能得到了更大的,不知何故角文摘開始工作不同。我的意思是,在我添加我的最大化/恢復/最小化方法和按鈕來匹配之前,當我的控制器到達上面的代碼時,窗口已經被消化通過範圍並顯示在DOM中(儘管隱藏着{display:none}對於jQuery的淡入)意味着上面的代碼工作。

但是現在有更多的事情要消化,當它到達那一點時,摘要不完整,並且子查找器失敗,因爲該DOM尚未更新。我必須使用$超時,而且我越來越需要增加時間。我現在必須等待大約600ms,我覺得這是從圖標點擊到窗口顯示緩慢。

現在,如果我在$ timeout()之前添加一個$ scope。$ apply(),它就好像只是迫使摘要加快一樣。我可以將時間縮短到0ms,並且一切都可以即時運作。但是,我收到了一個消息進度錯誤。無論如何,我認爲$超時等待摘要結束?

我試過各種方法,甚至$$ postDigest,但似乎工作的唯一的事情是迫使一個$應用導致消化進程中的錯誤,終端用戶永遠不會看到,甚至不關心,因爲它實際上使這一切工作。這不是我的問題,但它讓我感到困擾,因爲在打開和關閉我的窗口「窗格」之後,摘要進行中的錯誤可能會在控制檯中增加。

這裏有一點點舊版本的鏈接:AkadineWebOS

的應用程序更jQuery的比角,我只是用角爲它的HTTP模塊,並可以很容易地推和拼接我的窗口陣列和讓ng-repeat魔法處理這個dom。 jQuery通過拖拽,調整大小,淡入淡出,將窗口置於開放位置以及最重要的其他位置來完成所有繁重的工作。

所以這裏是我的問題:有人可以向我解釋我缺少Angular的文摘的作品嗎?

+0

請不要在控制器內執行此操作。在指令中做這個更好。如果我能夠更多地瞭解你想要獲得什麼類型的DOM以及你想要創建什麼樣的DOM,我將能夠建議一個鏈接功能。 – Makoto

+0

這是什麼,你試圖通過回落到像這樣的jQuery完成?你的問題描述了一些真正抽象的過程,沒有太多的細節,因此很難追隨你正在經歷的事情,但真正突出你正在使用'$ compile'和jQuery方法;在大多數情況下,'$ compile'是不必要的,並且肯定將jQuery與angular混合在一起有它自己的考慮..... – Claies

+0

它*感覺就像*你可能會描述一個角度是async的情況,儘管angular可以更新DOM,但jQuery並不知道該進程是異步的,並且正試圖立即訪問DOM。這不是'$ digest'的問題,具體來說。 – Claies

回答

0

正如Claise所說,jQuery不像角度那樣asyc。我實際上只需要將$ timeout()更改爲普通的ol setTimeout(),基本上可以使用我的jQuery回調函數。現在它效果很好!

相關問題