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
的数据被填满。
我是否应该以某种方式等待诺言已经准备就绪/已解决?
你可能想看: