TLDR; ng资源需要一个对象或数组objects在你的回应中。
When isArray
被设定为true
在操作列表中,ng资源模块迭代响应中收到的每个项目,并创建资源的新实例。为此,Angular 在收到的项目和Resource
类,它为我们提供了一个具有特殊方法的对象($save
, $delete
等等)
检查来源在这里 https://github.com/angular/angular.js/blob/master/src/ngResource/resource.js#L385-L394.
内角用途角度复制 http://docs.angularjs.org/api/angular.copy执行深层复制,此功能仅适用于objects and arrays,当我们传递一个字符串时,它会将其视为一个对象。
JS 中的字符串可以通过提供对每个字符的顺序访问来充当数组。angular.copy
当传递一个字符串时会产生以下结果
angular.copy('hi',{}) => {0:'h', 1:'i'}
每个字符都成为对象中的一个值,其索引设置为键。ng资源将提供具有属性的资源0
and 1
.
您的选择是:
使用较低级别$http service
$http.get('/res').success(function(data){
$scope.test = data;
});
在 json 响应中返回对象数组
[{'data': "hello"}, {'data': "world"}]
拦截响应并更改您的数据
如果无法修改服务器发回的数据并想使用ng资源您将需要改变响应。阅读如何做here http://docs.angularjs.org/api/ng.%24http