如何将数据与角度数据同步
How to sync data with angular-data
我有一个 angular 项目,其中有一个 angular 数据用于我的 Restful API。
我的情况如下:
在我的服务中,我 return 定义了资源
在我的控制器中我使用 service.defineresource.findAll().then
一切正常,但这是我的问题。当新数据添加到服务器时,如何更新缓存或将新数据添加到我的缓存。
请指教
代码:
//在service.js
.factory('Service', function(DS) {
DS.defineresource({
name: 'items'
endpoint:'api/v2/users'
});
});
//在controller.js
.controller('MainCtrl', function($scope, Service) {
Service.findAll().then(function (data) {
$scope.items = data
});
});
我上面的代码在我第一次加载时获取所有数据,但在初始加载后它只从缓存中加载。我的问题是有没有一种方法可以在不破坏缓存的情况下同步和获取新数据。
要强制从后端刷新数据,您需要在选项中设置 bypassCache: true
。如果你不传递这个,那么 angular-data 将从缓存中加载。这记录在 api documentation.
要每 15 分钟刷新一次数据,请使用 $timeout
和 900000 毫秒。要让按钮刷新,请使用将从按钮上的 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>
如果您只使用 Angular 路由,请使用:
$route.reload()
它将重新加载/刷新您的页面。所以数据将是同步的。
您可以在 ng-click 中使用它,或者在输入新数据时检查您的控制器使用它
$route.reload()
如果您使用的是 UI-Router,您也可以这样做,但不要使用 $route.reload() :
$state.go($state.current, {}, {reload: true});
我有一个 angular 项目,其中有一个 angular 数据用于我的 Restful API。
我的情况如下:
在我的服务中,我 return 定义了资源 在我的控制器中我使用 service.defineresource.findAll().then
一切正常,但这是我的问题。当新数据添加到服务器时,如何更新缓存或将新数据添加到我的缓存。
请指教
代码: //在service.js
.factory('Service', function(DS) {
DS.defineresource({
name: 'items'
endpoint:'api/v2/users'
});
});
//在controller.js
.controller('MainCtrl', function($scope, Service) {
Service.findAll().then(function (data) {
$scope.items = data
});
});
我上面的代码在我第一次加载时获取所有数据,但在初始加载后它只从缓存中加载。我的问题是有没有一种方法可以在不破坏缓存的情况下同步和获取新数据。
要强制从后端刷新数据,您需要在选项中设置 bypassCache: true
。如果你不传递这个,那么 angular-data 将从缓存中加载。这记录在 api documentation.
要每 15 分钟刷新一次数据,请使用 $timeout
和 900000 毫秒。要让按钮刷新,请使用将从按钮上的 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>
如果您只使用 Angular 路由,请使用:
$route.reload()
它将重新加载/刷新您的页面。所以数据将是同步的。 您可以在 ng-click 中使用它,或者在输入新数据时检查您的控制器使用它
$route.reload()
如果您使用的是 UI-Router,您也可以这样做,但不要使用 $route.reload() :
$state.go($state.current, {}, {reload: true});