使用ui-router是否有一种简单的方法可以强制我的所有控制器只被初始化一次?像单身人士一样。截至目前,每次我更改为状态时,链接到该状态的控制器都将重新初始化。我不希望这种情况发生。这似乎应该很简单,但我无法在网上找到解决方案。
答案 0 :(得分:2)
处理一次性或全局操作之类的常用方法是在包含所有ui-views的元素上安装应用程序级控制器:
<html ng-app="app">
<head>...</head>
<body ng-controller="ApplicationController">
<div ui-view></div>
</body>
</html>
然后,ApplicationController可以进行一次性操作。它会被初始化一次(当应用程序启动时)并且将在路由和状态更改之间保持不变。
与您的州相关联的控制器应仅关注构建自己的视图,而不是执行一次性操作。如果状态控制器需要访问共享数据,那么该数据应该按照ABOS的建议存储在服务中。状态控制器应该请求来自服务的共享数据,并且服务应该是决定是否应该返回缓存数据的服务,或者是进行新的服务调用。