像Durandal一样在Angular中维护控制器状态吗?

时间:2013-06-03 18:11:31

标签: angularjs durandal

我喜欢Durandal具有在VM上调用的Activate / Deactivate方法,甚至可以缓存视图。

有没有办法在Angular中使用相同的功能?

1 个答案:

答案 0 :(得分:1)

您可以使用服务/工厂。这些是AngularJS中的单例,您可以将它们注入控制器。每个控制器严格拥有一个服务,并且在导航到视图/控制器之间将维护该服务。

http://docs.angularjs.org/guide/dev_guide.services.creating_services

这样做的方法是你的控制器将myService作为注入依赖项。然后将其分配给$ scope作为$scope.cache = myService。然后在您的视图中,绑定到cache.someProperty以获取需要缓存的元素。

暂且不谈:

您甚至可以在控制器之间共享包含状态数据的服务。虽然我会建议不要使用这种模式,因为它看起来像全局状态。您在控制器之间共享的服务理想情况下应仅提供功能而不是数据对象。除非您专门寻找全球数据存储区:)