我有兩個指令。每個指令的鏈接中都有一個異步函數,如$http
或ngResource
。我想單擊按鈕A通過指令A從後端獲取數據,然後更改指令B及其視圖中的數據。
我嘗試使用數據服務$boastcast
,因爲大多數人都會在指令A和B之間共享數據,並使用$apply
來更新視圖。但我經常遇到inprog錯誤。那麼解決這個問題的最好方法是什麼?
我有兩個指令。每個指令的鏈接中都有一個異步函數,如$http
或ngResource
。我想單擊按鈕A通過指令A從後端獲取數據,然後更改指令B及其視圖中的數據。
我嘗試使用數據服務$boastcast
,因爲大多數人都會在指令A和B之間共享數據,並使用$apply
來更新視圖。但我經常遇到inprog錯誤。那麼解決這個問題的最好方法是什麼?
當你跑步時出現錯誤$scope.$apply
。當您嘗試手動運行消化循環,是alread乳寧然後這個異常會發生
所以檢查摘要在使用前運行應用
if(!$scope.$$phase) { $scope.$apply() }
可能它會工作,但今天它被認爲是壞習慣。首先你有$ scope的依賴,我們應該儘量避免。其次,$$階段是內部Angular事物。它可以通過使用包裝代碼im $ timeout而不是$ apply來包裝代碼來解決。只有在循環未運行時,$ timeout纔會調用digest循環。 –
而不是包裝代碼$申請,嘗試注入$ timeout並用$ timeout包裝你的代碼。只有當循環未運行時,它纔會以安全的方式運行消化循環。
嗨。請發佈您的代碼 – Akashii
提供[mcve]。可能甚至不需要廣播,並且很可能不需要$ apply() – charlietfl