我是AngularJS的新手,我正在尝试为自己构建一个简单的小应用程序。我有使用$resource
获取的应用程序的JSON数据,并且此数据在多个视图/路径中应该相同。但是,当我转到新路径时,新视图不再可以使用JSON数据(存储为$scope.data
)。如何将此数据传递到新视图而不需要其他提取? (教程电话目录应用程序每次都会从我所知道的内容中重新获取此数据。)
根据我的理解,$rootScope
可以做到这一点,但似乎通常不赞成。如果这没有多大意义,我道歉;我在这里深处潜水。
答案 0 :(得分:17)
使用服务存储数据。将该服务注入需要访问此数据的每个控制器。每次创建并执行控制器(因为您切换到另一个视图/路由)时,它都可以向服务请求数据。如果服务还没有数据,它可以向服务器发出请求并向控制器返回一个promise(如下所示,请参见下文)。如果服务有数据,它可以立即将其返回给控制器。
另见Processing $http response in service
请注意,与控制器不同,服务是单例。
另一种变体:当创建服务时,它可以自己获取数据,然后存储它以供以后使用。控制器可以比$ watch服务上的属性或功能。有关此方法的示例,请参阅How do I store a current user context in Angular?