在Angular应用中,我想让几个变量保持"全局"。我选择localStorage作为持久存储。优点:在页面刷新时,应用程序的全局"状态"被保留。
提供这种本地存储的服务
我的问题:什么是最干净的方法来提供这个本地存储的数据到每个控制器和进一步的视图?我一定要记住:
- 将我的本地存储注入每个控制器
- 在每个控制器中,分配本地存储数据到控制器的作用域?
例如:在登录时,我选择项目("你今天要在哪个项目上工作?")。这个项目应该是一个全局变量。
应用程序的构建方式是头区由控制器a提供,内容区由控制器b提供。
然后我必须将本地存储数据注入控制器A和b。
angular.module('app').controller('ControllerA', function ($scope, Session) ...y
在两个控制器中,我必须通过
向相应的视图提供数据:$scope.session = $localStore.getData();
我不喜欢我必须为每个控制器考虑这些行。这是一个干净和首选的方式来拥有这样的全局应用程序数据?
备注:不需要动态绑定。在登陆页面上,用户选择项目,然后将其持久化,并可由所有后续控制器以只读方式检索。如果全局变量需要是动态的,情况就不同了。
JSFiddle例子: http://jsfiddle.net/Wr7LS/5/
我建议将localStorage放在angular-service包装器中,并将其注入到需要使用这些数据的地方。
在控制器之间使用共享值的最简单方法是RootScope变量。