2016-07-28 107 views
0

有沒有辦法刪除angular.module('SomeModule')動態?動態刪除angular.module()

這是因爲我需要從製表符容器中的頁面加載和卸載模塊。

這是基於Scott Moss的概念,其中每個組件都被視爲Frontendmasters.com上的獨立應用程序。

我可以

angular.module(name) 

分別返回一個對象獲得的模塊對象,但我錯過清除引用此對象的一條明路。有沒有人解決過這樣的事情呢?

模板:http://plnkr.co/edit/8hK3lYjE7f06XtdHgNwL?p=preview

+0

您是否在談論取消註冊模塊?你爲什麼要這樣? –

+0

@EmileBergeron是的,這就是我的意思。這是因爲我遵循將組件視爲單獨應用程序的範例。當用戶瀏覽或刪除視圖(組件)時,我需要從DOM中卸載它。但用戶有能力再次添加它。但添加它給了我在模塊已經註冊的地方的錯誤 這是一件愚蠢的事情,但有一個潛在的200多個組件的應用程序。我想知道如果我可以通過控制註冊表來更好地管理內存 –

+1

我認爲你很困惑路由和依賴注入(與模塊)。您不應該從角度移除模塊,因爲它用於依賴性注入和負載排序。卸載DOM元素是通過控制器和路由完成的。 –

回答

2

這聽起來像你可能會想優化的東西不存在。

首先,似乎沒有任何記錄的方式來刪除模塊。原因似乎是covered in the docs。在那裏你會覺得這種說法(重點煤礦):

模塊可以以任意順序加載(或甚至並行),因爲模塊延遲執行

在這句話不指定延遲多久,但後來我們得到這個片段(再次,重點煤礦):

因爲模塊在加載時他們可以做什麼以任何順序加載到VM中,因此腳本加載程序可以利用此屬性並且平行加載過程。

放在一起,聽起來彷彿甚至多個模塊的多,你不會注意到在您的網站負載,因爲該模塊將只在因此需要加載它卸下模塊不是一個過程,應該永遠需要完成。

+0

將組件加載到選項卡容器中,並且如果您導航以加載另一個組件,則不會刪除第一個組件。這是事實。所以它不會在DOM中爲你清理。由於複雜的UI設計,我碰巧有一個非常繁忙的標籤容器。這意味着我需要懶惰的加載和懶卸載容器上的內容,並有能力到任何其他頁面,並有以前的內容被卸載。我找到了一個解決方案,通過刪除上面提到的「獨立應用程序」模式以及$ destroying指令。感謝您的建議,雖然:) –

+1

這聽起來更像是與你的標籤組件相比,與Angular的問題。控制器應該在不再使用時銷燬,除非您的選項卡組件繼續「使用」每個控制器,那麼這應該不是問題。儘管建立在自己的銷燬過程中總是一個好主意。 –