15

我是 AngularJS 的新手,正在尝试为自己构建一个简单的小应用程序。我有正在获取的应用程序的 JSON 数据$resource,并且这些数据在多个视图/路由中应该是相同的。但是,当我转到新路线时,JSON 数据(存储为$scope.data)不再可用于新视图。我该怎么做才能将此数据传递给新视图而不需要再次获取?(教程电话目录应用程序每次都会根据我所知重新获取此数据。)

据我了解,$rootScope可以做到这一点,但似乎普遍不赞成。如果这没有多大意义,我深表歉意;我在这里非常深入。

4

1 回答 1

17

使用服务来存储数据。将该服务注入需要访问此数据的每个控制器。每次创建和执行控制器时(因为您切换到另一个视图/路由),它都可以向服务请求数据。如果服务还没有数据,它可以向服务器发出请求并向控制器返回一个承诺(参见下文了解如何执行此操作)。如果服务有数据,它可以立即将数据返回给控制器。

另请参阅在服务中处理 $http 响应

请注意,服务是单例的,与控制器不同。

另一种变化:创建服务时,它可以自己获取数据,然后将其存储以供以后使用。控制器可以比 $watch 服务上的属性或功能。有关此方法的示例,请参阅 如何在 Angular 中存储当前用户上下文?

于 2013-02-12T03:35:22.137 回答