簡體   English   中英

AngularJS中的錯誤通常會導致無限循環

[英]Errors in AngularJS often causes infinite loops

通常,當我在Angular中遇到錯誤時,它會在瀏覽器中引起無限循環,並且可以鎖定所有內容,直到我可以終止該進程為止。 當從帶有ng-show之類的模板調用函數時,通常會發生這種情況。

<div ng-show="ifCanTakeAction()">
    <button ng-click="takeAction()></button>
</div>

如果函數ifCanTakeAction獲得異常,則它可能會變成無限循環。

顯然,僅在ifCanTakeAction中修復錯誤是相當容易的,但是每次計算機發生短暫的午睡時,我都會感到非常惱火。

我猜這是由於臟檢查而出現的循環。 ifCanTakeAction崩潰中的某個事件會導致另一輪檢查,並最終導致它再次崩潰。 或者只是臟檢查,然后連續觸發。 但是如何避免該錯誤? 像這樣從模板運行該功能是否明智? 通常,我會改為在控制器中分配一個模型並進行查看,但是有時您會遇到這樣的情況,即結果可能會隨着用戶與頁面的交互而改變,這就是為什么我將其基於函數的原因。

那么,這是正確的嗎? 是臟檢查導致此問題嗎? 手表會做得更好嗎(我認為這會遇到相同的基本問題)? 通常有沒有一種好的方法來捕獲和防止無限循環?

ifCanTakeAction()應該替換為canTakeAction標志。 這不僅可以解決瀏覽器崩潰的問題,而且性能更好。 當前,在每個摘要周期中,角度被迫調用該函數。 使用布爾值並在需要時在控制器中更新它更有意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM