0

我有一个带有角度数据的角度项目,可以与我的 Restful API 一起使用。

我的情况如下:

在我的服务中,我在我的控制器中返回一个 defineresource 我使用 service.defineresource.findAll().then

一切正常,但这是我的问题。当新数据添加到服务器时,我如何更新缓存或将新数据添加到我的缓存中。

请指教

代码://在service.js中

    .factory('Service', function(DS) {
     DS.defineresource({
        name: 'items'
        endpoint:'api/v2/users'
      });
     });

//在控制器.js中

    .controller('MainCtrl', function($scope, Service) {
      Service.findAll().then(function (data) {
        $scope.items = data
      });

   });

我的代码在我第一次加载时获取所有数据,但在初始加载后它只从缓存中加载。我的问题是有一种方法可以在不破坏缓存的情况下同步和获取新数据。

4

2 回答 2

1

要强制从后端刷新数据,您需要bypassCache: true在选项中进行设置。如果你不通过这个,那么角度数据将从缓存中加载。这记录在api 文档中。

要每 15 分钟刷新一次数据,请使用$timeout900000 毫秒。要让按钮刷新,请使用将从ng-click按钮上调用的范围函数。

.controller('MainCtrl', function($scope, $timeout, Service) {
    $scope.refreshData = function () {
        Service.findAll({}, { bypassCache: true }).then(function (data) {
            $scope.items = data;
        });
    }

    $scope.refreshData();

    $timeout($scope.refreshData, 900000);
});
<button ng-click="refreshData()">Refresh</button>
于 2015-01-09T23:25:13.250 回答
-1

如果您只使用 Angular 路由,请使用:

$route.reload()

它将重新加载/刷新您的页面。所以数据将是同步的。您可以在 ng-click 中使用它或在输入新数据时签入控制器使用它

  $route.reload()

如果您使用的是 UI-Router,您可以执行相同的操作,但不要使用 $route.reload() ,请使用以下命令:

$state.go($state.current, {}, {reload: true});
于 2015-01-10T09:50:34.267 回答