我有一個Angular.js應用程序,可以在複雜的對象模型中執行大量的會計類型計算(收入,成本,利潤等)。對對象模型任何部分的更改都需要重新執行所有計算。此外,對象模型的許多更改可以使用綁定直接從我的模板中進行 - 不需要控制器進行中間調整。如何知道Angular.js摘要循環何時開始(或結束)?
許多計算結果都需要同時顯示給用戶和有助於下游計算。例如,收入顯示給用戶,但也用於計算利潤(也顯示給用戶)。但是,在每個消化循環中兩次計算收入毫無意義(這是一個複雜的計算),因此明顯的優化是在首次計算時記憶,然後在循環的持續時間內重用此記憶值。
問題是我需要在摘要週期的開始或結束時清除這些記憶。一種方法是讓控制器在進行計算之前攔截每一個可能的變化來源並手動清除對象模型。相反,我更願意繼續使用已經建立的綁定。
據我所知,我需要的是一種方法來知道摘要週期何時開始或何時完成。當我收到這個通知時,我可以重置記憶。
的Angular $watch documentation說:
如果您希望收到通知,只要$消化被調用,您可以 註冊不聽者watchExpression功能。 (由於 watchExpression可以執行多次,每次$檢測到 變化時消化週期,對多次調用你的聽衆準備。)
這是對我沒有用,因爲結算上的每次迭代memoizations消化週期會挫敗讓他們擺在首位的目的。我只需要一個通知每個摘要週期。
我該怎麼做,或者是否有解決問題的替代方法?
_「...我需要清除這些記憶...」 - - 爲什麼? – Stewie
'是否有解決問題的替代方法?......真的不清楚實際問題是什麼 – charlietfl
如果您創建服務來計算此成本等並手動調用計算方法會怎樣? –