$stateProvider.state( 'clientinfo', {
abstract: true,
url: '/clientinfo',
resolve: {
clients: ['Restangular','localStorageService',function(Restangular,localStorageService){
var clients = localStorageService.get('clients');
if(clients == null) {
return Restangular.all('clients').getList().then(function(result){
localStorageService.add('clients',result);
angular.copy(result, clients);
});
return clients;
}]
}
......
}
我试图使用localStorage和restangular,但在初始页面加载时,我的客户端对象没有返回实际的GET响应,而是返回一个空对象,尽管我的本地存储设置正确。
虽然没有本地存储,但此代码正常工作:
$stateProvider.state( 'clientinfo', {
abstract: true,
url: '/clientinfo',
resolve: {
clients: ['Restangular',function(Restangular){
return Restangular.all('clients').getList();
}
}
.....
}
有任何帮助吗?感谢
我正在使用此模块进行本地存储:https://github.com/grevory/angular-local-storage Restangular:https://github.com/mgonto/restangular
答案 0 :(得分:3)
没有localStorage的版本可以正常工作,因为Restangular调用会返回promises,$state
服务将在最终完成转换并加载控制器之前解析。
但是,在您的初始示例中,您的then()
未返回值,因此生成的承诺(即您要返回的内容)的解析为null
。如果您移除了angular.copy()
来电并返回result
,那么它应该可以正常使用。