Javascript angularjs数据的单一真实来源?
我有一个使用restangular的angular来实现api。下面是一个模型示例Javascript angularjs数据的单一真实来源?,javascript,angularjs,Javascript,Angularjs,我有一个使用restangular的angular来实现api。下面是一个模型示例 ReservationModel.factory('ReservationRestangular', function (Restangular) { var baseURL = ''; return Restangular.withConfig(function(RestangularConfigurer) { RestangularConfigurer.
ReservationModel.factory('ReservationRestangular', function (Restangular) {
var baseURL = '';
return Restangular.withConfig(function(RestangularConfigurer) {
RestangularConfigurer.setBaseUrl(baseURL);
});
}).service('ReservationService', ['ReservationRestangular', function(ReservationRestangular) {
this.get = function(id) {
return ReservationRestangular.one('reservations', id).get().then(function(response) {
return response;
});
};
this.all = function() {
return ReservationRestangular.all('reservations').getList().then(function(response) {
return response;
});
};
}]);
当前,需要保留列表的每个控制器都会调用ReservationService.all,这会命中服务器,如果需要特定的保留,则会调用ReservationService.get,并命中服务器。如果他们移动到应用程序的另一个部分,并且控制器需要预订,那么它会再次这样做
我想要的是,服务器只在第一次命中,即调用all并将响应存储在ReservationService中的一个变量中,该变量可以在下次检查并立即返回,而不是再次命中服务器
如果创建或编辑了预订,则可以再次调用all以获得更新的列表
如果请求单个预订,则应首先检查存储的预订列表,如果找到,则从该列表返回预订,而不是点击服务器
这是正确的做事方式吗
这里最好的地方是预订服务吗?它是一个单例,因此只能创建一次“每个会话”可能不是正确的术语,并且在所有模块和控制器之间共享?这是正确的方法吗?也许吧。如果你坚持更新=>刷新列表,应该没问题,只是如果其他用户更新列表,用户不会实时获得数据库更新。