ui-router在状态变化时重新初始化角度控制器

时间:2015-04-09 22:24:39

标签: angularjs angular-ui-router

使用ui-router是否有一种简单的方法可以强制我的所有控制器只被初始化一次?像单身人士一样。截至目前,每次我更改为状态时,链接到该状态的控制器都将重新初始化。我不希望这种情况发生。这似乎应该很简单,但我无法在网上找到解决方案。

1 个答案:

答案 0 :(得分:2)

处理一次性或全局操作之类的常用方法是在包含所有ui-views的元素上安装应用程序级控制器:

<html ng-app="app">
    <head>...</head>
    <body ng-controller="ApplicationController">
        <div ui-view></div>
    </body>
</html>
然后,ApplicationController可以进行一次性操作。它会被初始化一次(当应用程序启动时)并且将在路由和状态更改之间保持不变。

与您的州相关联的控制器应仅关注构建自己的视图,而不是执行一次性操作。如果状态控制器需要访问共享数据,那么该数据应该按照ABOS的建议存储在服务中。状态控制器应该请求来自服务的共享数据,并且服务应该是决定是否应该返回缓存数据的服务,或者是进行新的服务调用。