来自服务器的以下JSON响应
[
"hello",
"world"
]
Run Code Online (Sandbox Code Playgroud)
正在通过此ngResource服务将其解析为2d数组
myService.factory('Name', function($resource){
return $resource(site_url+'api/accounts/:accountId/names/', {}, {
list: {method:'GET', params:{}, isArray:true}
});
});
Run Code Online (Sandbox Code Playgroud)
这样叫
$scope.names = Name.list({accountId:$scope.account.id}, function(e){
console.log(e);
});
Run Code Online (Sandbox Code Playgroud)
追踪到
[{"0":"h","1":"e","2":"l","3":"l","4":"o"},{"0":"w","1":"o","2":"r","3":"l","4":"d"}]
Run Code Online (Sandbox Code Playgroud)
任何提示?
jai*_*ime 99
TLDR; ngResource期望的物体或阵列对象中的响应.
当在操作列表中isArray
设置为时true
,ngResource模块迭代响应中接收的每个项目,并创建资源的新实例.要做到这一点角度,基于接收到的项目和之间的深拷贝Resource
类,这让我们有特殊的方法的对象($save
,$delete
等等)
内部角度使用angular.copy来执行深度复制,此函数仅对对象和数组进行操作,当我们传递字符串时,它会将其视为对象.
JS中的字符串可以通过提供对每个字符的顺序访问来表现为数组.angular.copy
传递字符串时会产生以下内容
angular.copy('hi',{}) => {0:'h', 1:'i'}
Run Code Online (Sandbox Code Playgroud)
每个字符都成为对象中的值,其索引设置为键.ngResource将提供具有属性0
和资源的资源1
.
你的选择是:
$http.get('/res').success(function(data){
$scope.test = data;
});
Run Code Online (Sandbox Code Playgroud)
[{'data': "hello"}, {'data': "world"}]
Run Code Online (Sandbox Code Playgroud)
如果您无法修改服务器发回的数据并希望使用ngResource,则需要转换响应.在这里阅读如何做到这一点
归档时间: |
|
查看次数: |
17487 次 |
最近记录: |