1
我正在AngularJS中構建一個應用程序。我的應用程序也使用第三方作用於像這樣的一個div JavaScript庫:
<div id="turn-me-into-a-slider"></div>
現在我確實有幾個這樣的div,並使用NG-重複,使他們。所以,它真的看起來更像是這樣的:
<div id="sliders-container" ng-repeat="slider in sliders track by $index">
<div id="slider-{{$index}}"></div>
</div>
在我的代碼
現在,當我想添加一個滑塊第一我添加一個新的滑塊sliders
陣列。這應該傳播到DOM,然後我可以運行id="slider-n"
div上滑塊的初始化函數。這是問題出現的地方。如果在將新值推入sliders
數組之後立即將滑塊的初始化函數放入,DOM尚未更新,並且調用滑塊初始值設定項時,不會有DOM元素正確的編號,並且初始化失敗。如果我先打電話$scope.$apply()
,那就解決了問題,但偶爾我會得到一個error, $scope.$apply() already in progress
。有沒有辦法可以調用$ scope。$ apply()只有當它不在運行時才能避免這種情況?如果您有任何其他建議,我會歡迎他們。
我需要$ $範圍適用於()立即運行,因爲下一行依賴於DOM被更新。 – user3413723 2015-02-18 13:09:25
您可以使用$$階段,就像文章但不是所有要執行的應用,其他選項是evalAsync,但會影響性能(我認爲....),或者其他方式是將1秒變爲1毫秒,嘗試對你的情況最好。 – 2015-02-18 13:36:28