【发布时间】:2016-06-14 10:49:27
【问题描述】:
我有一个 c# web api 方法,它返回整数值为HttpResponseMessage,想使用 $resource 从 AngularJs 中的响应中访问相同的值,如何?
网络 API:
[HttpPut]
[Route("DeleteFile")]
public HttpResponseMessage DeleteFile(int cabinetFileID)
{
var fileName = cabinetDataAccess.GetFilePath(cabinetFileID);
var returnVal = cabinetDataAccess.DeleteCabinetFile(cabinetFileID, UserEmail);
return Request.CreateResponse(HttpStatusCode.OK, returnVal);
}
服务:
(function () {
'use strict';
angular
.module('data')
.factory('cabinetService', cabinetService);
cabinetService.$inject = ['$resource', 'serviceBase'];
function cabinetService($resource, serviceBase) {
var deleteCabinetFileResource = $resource(serviceBase + '/api/Cabinet/DeleteFile?cabinetFileID=:cabinetFileID',null,{'update':{method:'PUT'}});
return {
deleteCabinetFile: deleteCabinetFile
};
function deleteCabinetFile(cabinetFileID){
return deleteCabinetFileResource
.update({cabinetFileID:cabinetFileID},null)
.$promise;
}
}
}());
控制器:
function deleteThumbnail(cabinetFileID)
{
cabinetService
.deleteCabinetFile(cabinetFileID)
.then(function (data) {
//How do i Access my return value here ???
//Something like
if(data.returnVal === -1)
//do something
})
.catch(function (err) {
growl.err('Unable to delete file, Please try later !', {ttl: 20000});
})
}
这段代码让我得到响应,我需要如何访问数据的返回值?
【问题讨论】:
-
当你执行你的代码时,究竟包含什么数据?
-
不,它不能那样工作。数据有以下信息:Resource {$promise: r, $resolved: true}$promise: r_bitField: 33554433_fulfillmentHandler0: (data)_promise0: undefined_receiver0: undefined_rejectionHandler0: Resource__proto__: r$resolved: true__proto__: Resource
-
也许这个链接可以帮助你:stackoverflow.com/questions/29071785/…
-
$resource服务使用angular.copy填充$resource对象,angular.copy忽略原语。要么让您的服务器返回一个对象,添加一个响应拦截器来将响应转换为一个对象,要么使用$http服务。 -
是的,我更改了我的 c# 代码以返回一个 Json 对象并且它有效。非常感谢!
标签: c# angularjs angular-promise angular-resource