1

我使用 Angular js 和 routeProvider 创建了一个 webapp。我没有在 ng-view 中加载部分内容,但我劫持了 routParam 更改,它导致创建我自己的对象,指示应用程序的哪些部分处于活动状态,请参见下文:

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-show="url.section == 'contacts'"

所以我使用这个全局对象来 ng-show 或 ng-switch 或 ui-如果应用程序的某些部分在适用时就位。这也允许我创建 3 级深度链接。

我正在为应用程序的每个主要部分创建一个工厂,其中包含一个空对象,然后将增长的数据存储在工厂内的每个控制器中,这样当通过 ng-switch 重新加载控制器时,数据仍然存在,我不这样做不必再得到它...

我的问题/问题

这是存储我的数据的适当方式吗?或者我应该将它与cacheFactory耦合并将该对象存储在cacheFactory中,然后在控制器中返回cacheFactory

将数据存储在 cacheFactory 和仅将数据存储在工厂中并将其放在控制器之外有什么区别......我很困惑?

当我这样做并使用 ng-switch 切换到不同的部分时,信息会从 DOM 中取出,当我切换回来时,数据会被放回,因为它仍存储在工厂中,但它为我的选项卡显示的内存在即使我没有加载任何新数据,每次我切换回来时,chrome 都会不断攀升......我做错了什么?

这是我如何构建应用程序的粗略示例...我构建的测试应用程序

4

1 回答 1

0

当时我对 angularjs 的了解还不够,但我的第一个问题是我正在从 DOM 中反渲染和渲染大块数据,然后再返回,我认为内存泄漏实际上只是 DOM 内存爬升是因为 Angular 模板引擎不得不重新渲染模板。

于 2013-10-13T08:52:44.670 回答