ui-路由器在状态改变时重新初始化 angular 控制器

ui-router reinitializing angular controllers on state change

有没有简单的方法使用 ui-router 强制我的所有控制器只初始化一次?就像单身狗一样。截至目前,每次我更改状态时,链接到该状态的控制器都会重新初始化。我不希望这发生。这看起来应该很简单,但我在网上找不到任何解决方案。

处理一次性或全局操作等事情的一种常见方法是在一个元素上设置一个应用程序级控制器,该元素包装了您所有的 ui-views:

<html ng-app="app">
    <head>...</head>
    <body ng-controller="ApplicationController">
        <div ui-view></div>
    </body>
</html>

ApplicationController 然后可以负责一次性操作。它被初始化一次(当应用程序启动时),并将在路由和状态更改之间持续存在。

与您的状态关联的控制器应该只关心构建它们自己的视图,而不是执行一次性操作。如果状态控制器需要访问共享数据,那么该数据应该存储在 ABOS 建议的服务中。状态控制器应该从服务请求共享数据,服务应该决定它是否应该 return 缓存数据,或者进行新的服务调用。