AngularJS使用$ resource服务GET请求无法解决承诺

问题描述

User.get( {username: 'bob'} )不会立即返回您的实际数据。当ajax返回时,它返回的内容将保存您的数据。在那个($promise)上,您可以注册一个附加的回调来记录您的数据。

您可以将代码更改为:

   scope.user = User.get( {username: 'bob'}  );    // GET
   scope.user.$promise.then(function(data) {
       console.log(data);
   });

解决方法

假设这样的服务:

   services.factory('User',function($resource){
        return $resource('/rest/usersettings/:username',{},{
            get:    {method: 'GET'},update: {method: 'POST'}
        });
    });

所以应该这样使用:

        scope.user = User.get( {username: 'bob'}  );    // GET

        console.log( JSON.stringify(scope.user) )       // {"$promise":{},"$resolved":false}

因此,当我发送GET请求时,一切正常,构建了ur + params:

http://localhost:9000/rest/usersettings/bob

问题,为什么我有: {"$promise":{},"$resolved":false}

如果我的GET请求导致从服务器返回的json-
response:{"username":"bob","email":"bob@bobs.com"}那么我希望我scope.user的数据被填满。

我是否应该以某种方式等待诺言已经准备就绪/已解决?

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...