我发现Angular $资源的行为非常奇怪.请查看以下代码行:
class Service
constructor: ($resource) ->
service = $resource '/record/:id'
Service::list = (cb) ->
service.query().$promise.then (data) ->
#result: data == [e, $promise: Object, $resolved: true]
cb data
Service::get = (id, cb) ->
service.get(id:id).$promise.then (data) ->
#result: data == {id: 1, name: 'name' ...}
cb format data
Run Code Online (Sandbox Code Playgroud)
服务"get"方法返回服务器发送的正确值(对象),但"list"方法作为结果返回包含$ promise和$ resolved的数组...
有没有人有一些逻辑解释?
更新:
我发现了这个问题.服务结果是字符串数组,导致sting chars的结果数组.这可以通过使用$ http而不是$ resource来解决.
例如:
服务器端 - > ['list','of','elements']
客户端 - > ['l','我','s','t']
如果像我一样,你希望你的回复为你提供没有额外的$ promise和$ resolved属性的数据,你可以修改资源并添加一个'拦截器',如下所述:http: //docs.angularjs.org/guide/迁移#资源的承诺,都分辨与-的资源实例
对于get,它将如下所示:
var Resource = $resource('/url', {}, {
get: {
method: 'get',
interceptor: {
response: function(response) {
// expose response
return response;
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
然后,在发出get请求时,您可以访问响应对象而不是资源实例.例如:
Resource.get(function(response){
angular.forEach(response.data, function(value, key){
}, $scope.varName);
});
Run Code Online (Sandbox Code Playgroud)
这也意味着您可以访问其他响应属性response.status,response.headers以及获取资源实例response.resource.
| 归档时间: |
|
| 查看次数: |
4005 次 |
| 最近记录: |