2013-04-10 64 views
1

我已經使用angular js和routeProvider創建了一個webapp。我不加載NG-視圖中的諧音,但我劫持了routParam改變,它會導致創建自己的對象,指明哪些應用程序的一部分是活躍見下圖:添加刪除控制器時AngularJS瀏覽器內存不斷攀升

lrApp.config(function ($routeProvider) { 
$routeProvider 
    .when('/',{ 
     redirectTo:'/share' 
    }) 
    .when('/:action',{ 
     controller: "viewController", 
     template: ' ' 
    }) 
    .when('/:action/:section',{ 
     controller: "viewController", 
     template: ' ' 
    }) 
    .when('/:action/:section/:subsection',{ 
     controller: "viewController", 
     template: ' ' 
    }) 
    .otherwise({ 
     redirectTo:'/' 
    }); 
}); 

空的空間模板,幷包括空在你的身體觸發routeParams改變之後我打電話的viewController其中包括對身體和包括全球訪問對象即NG秀=「url.section ==‘接觸’」

所以我用這個全局對象爲ng-show或ng-switch或ui - 如果應用程序的某些部分適用於適當位置。這也使我能夠創建3個級別的深層鏈接。

我爲包含一個空對象的應用程序的每個主要部分創建一個工廠,然後將每個控制器的增長數據存儲在一個工廠內,以便當通過ng-switch重新加載控制器時,數據仍然那裏,我沒有再得到它...

我的問題/問題

這是要保存我的數據的適當方法?或者我應該將它與cacheFactory耦合並將該對象存儲在緩存工廠中,然後在控制器中返回緩存工廠

將數據存儲在cacheFactory中,並將數據存儲在工廠中並將其存儲在控制器之外,這有什麼區別......我很困惑?

當我這樣做,並使用ng-switch切換到不同的部分時,信息從DOM中取出,當我切換回數據時,由於它仍然保存在工廠中,但它顯示的內存對於我在Chrome中的選項卡,每次切換回來時都會越來越高,即使我沒有加載任何新數據......我做錯了什麼?

這是我如何建立自己的應用程序一個粗略的樣本... test app I built

回答

0

我沒有足夠的瞭解當時angularjs,但我的第一個問題是,我是去渲染和渲染的大塊數據從DOM中移出,然後返回,我認爲是內存泄漏,實際上只是DOM內存攀升,因爲角模板引擎不得不重新渲染模板。