0

我是angularjs的新手。我已經設計出angularJS服務,這是因爲每下面給出的圖: -angularjs服務垃圾收集變量

enter image description here

全球服務被用作用於控制器間通信的平均值。也就是說,它包含父級和子級控制器之間共享的數據。 Grand Parent控制器打開一個彈出對話框,其中包含parentController2,該對話框又打開另一個彈出窗口,其中包含childController3。

現在,我想要的是,存儲在全局服務中的數據必須設置爲空,當其關聯的控制器被銷燬時。這是因爲根據我的知識,服務是angularjs中的單例。所以,我不希望服務在應用程序的整個生命週期中保持變量,即使它們不是必需的。此外,我正在使用controllerAs語法並且不想使用$ scope(我知道我可以在作用域的'$ destroy'事件中執行垃圾回收),以使我的東西與angularjs 2.0兼容。

有沒有什麼辦法,我可以在控制器使用controllerAs語法時從服務器收集變量,這些變量不是必需的?

爲新手問題道歉。提前致謝。

回答

0

使用ng-view是垃圾收集的另一個解決方案,因爲它在視圖更改後立即銷燬作用域。它將與ngroute一起使用,但仍然提供了更好的垃圾收集機制。 您可以檢查NG-視圖代碼

function destroyLastScope() { 
    if (lastScope) { 
     lastScope.$destroy(); 
     lastScope = null; 
    } 
    } 

這個函數被調用,如果你從父母到孩子家長的範圍將被銷燬

+0

是什麼破壞,即以前的範圍的範圍的指令內lastScope在這裏? –

+0

如果您正在搬家,這是家長的範圍。 –