我有一个角度服务,它调用Play服务器并获取JSON对象。下面是我的代码片段。
service.js
angular.module('testApp.services',[]).factory('testService',function($resource){
var service = {
getData : getData
};
function getData(){
return $resource('http://localhost:9000/testRead',{}, {
save: {
method: 'POST',
headers: {
'Auth-Token': 'B1016693LCAP8154'
}
}
});
};
return service;
});
controller.js
angular.module('testApp.controllers',['testApp.services']).controller('TestController',function($scope, testService){
testService.getData().save().$promise.then(function(data){
$scope.output = angular.fromJson(JSON.stringify(data));
console.log("Output : ", $scope.output);
});
});
在控制器中,当我使用testService.getData().query().$promise.
时,一切正常。但是当我将其更改为testService.getData().save().$promise.
时,会抛出错误:
错误:[$ resource:badcfg]资源配置错误
我从播放中返回JSON类型。我读到save()期望一个对象和query()一个Array类型?为什么它不起作用呢?当我在浏览器中检查时,我在响应中获取JSON数据。但是在控制器中我无法使用它。请参阅下面的图片。
错误:
浏览器响应:
答案 0 :(得分:0)
您提供的错误似乎不是我的整个日志。所以我只能在这里做出假设。
默认情况下, $ resource 服务的save方法需要响应为JSON对象,并且您的响应是数组的JSON对象,因此会引发错误
如果是这种情况,您可以通过将 isArray 添加到您的配置中来快速解决此问题:(同样的修补程序可以应用于其他 $ resource 功能,例如< strong>获取,删除,查询)
save: {
method: 'POST',
headers: {
'Auth-Token': 'B1016693LCAP8154'
},
isArray: true
}