Restangular和本地存储

时间:2013-11-12 23:34:20

标签: angularjs local-storage angular-ui-router restangular

$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

1 个答案:

答案 0 :(得分:3)

没有localStorage的版本可以正常工作,因为Restangular调用会返回promises,$state服务将在最终完成转换并加载控制器之前解析。

但是,在您的初始示例中,您的then()未返回值,因此生成的承诺(即您要返回的内容)的解析为null。如果您移除了angular.copy()来电并返回result,那么它应该可以正常使用。