Angularjs 我将在哪里设置响应类型?
如果下面返回的是arraybuffer,我将在哪里设置responseTypeAngularjs 我将在哪里设置响应类型?,angularjs,Angularjs,如果下面返回的是arraybuffer,我将在哪里设置responseType var User = $resource('/user/:userId', {userId:'@id'}); User.get({userId:123}, function(user, getResponseHeaders){ user.abc = true; user.$save(function(user, putResponseHeaders) { //user => saved user
var User = $resource('/user/:userId', {userId:'@id'});
User.get({userId:123}, function(user, getResponseHeaders){
user.abc = true;
user.$save(function(user, putResponseHeaders) {
//user => saved user object
//putResponseHeaders => $http header getter
});
});
我试着做:
var headers = {responseType: 'arraybufer'}
User.get(({userId:123},function(user,headers){...
但是当我使用console.log(headers)时,它会显示undefinedisArray–{boolean=}–如果为true,则此操作返回的对象是一个数组,请参阅returns部分 transformResponse–{函数(数据、HeaderGetter)|数组。}–转换函数或此类函数的数组。transform函数接受http响应体和头并返回其转换(通常是反序列化)版本。默认情况下,transformResponse将包含一个函数,用于检查响应是否类似于JSON字符串,并使用angular.fromJson对其进行反序列化。要防止此行为,请将transformResponse设置为空数组:transformResponse:[] $resource
angular.module('itemServices', ['ngResource'])
.factory('Item', ['$resource',
function ($resource) {
return $resource('items/:id',
{id: '@id'},
{
query: {
isArray: true,
method: 'GET',
params: {},
transformResponse: function (data) {
return angular.fromJson(data).body.rows
}
},
get: {method: 'GET', params: {id: '@id'}},
save: {method: 'POST'},
update: {method: 'PUT', params: {id: '@id'}},
delete: { method: 'DELETE', params: {} }
});
}]);
我看到了相同的代码,但它对我来说毫无意义
$resource('/user/:userId',{userId:'@id'},{query:{isArray:true,method:'GET',params:{},transformResponse:function(data){return angular.fromJson(data.body.rows}})
更明智的做法是使用下载二进制数据。用于与服务器端源进行交互。@georgeawg,但是如果使用$resource,我将如何实现它?重要的是要认识到调用$resource
对象方法会立即返回空引用(对象或数组取决于isArray
)。从服务器返回数据后,现有引用将填充实际数据。在引擎盖下,它只使用JavaScript对象或JavaScript数组。@georgeawg-Ah…我对JavaScript的理解不是很好…谢谢