2017-02-27 77 views
0

我使用$資源從服務器調用角度控制器調用ASP.NET MVC控制器的數據。從MVC控制器正確地返回值(十進制類型?),但是當解析該promise時,其參數只是一個空對象而不是預期值。

$資源文件

angular 
    .module('app') 
    .service('datacontext', function ($rootScope, $resource) { 

    return { 
      emissions: $resource('/api/emissions/:id', { 'id': '@id', emissionId: '@emissionId' }, 
      {      
       create: { method: 'POST' }, 
       lock: { method: 'PUT', url: "/api/emissions/lock" }, 
       getFxRate: { method: 'GET', isArray: false, url: '/api/emissions/getfxrate'} 
      }) 
    } 

ASP.NET MVC控制器

[HttpGet] 
[Route("/api/emissions/getfxrate")] 
public async Task<IHttpActionResult> GetFxRate(string currency) 
{ 
    var res = await _emissionsAppService.GetFxRateAsync(currency); 

    //Here I get properly a decimal value as expected. (eg. 1.07123) 
    return Ok(res); 
} 

角控制器

function getRate(currency){ 
    datacontext.emissions.getFxRate({ currency: currency}) 
    .$promise.then(function (result) { 

     //Here result is just an empty object {} 
    } 
    } 

我無法理解什麼是缺少從服務器獲取客戶端控制器的值。

回答

0

解決的承諾是空的,因爲我期待JSON對象,而我正在返回一個原始值。

我可以通過將下面的代碼添加到我的$資源來修復它。只要我返回一個對象,我就可以在承諾內正確獲取該值:

getFxRate: { 
    method: 'GET', 
    isArray: false, 
    url: '/api/emissions/getfxrate', 
    transformResponse: function (data) { 
      return { fxRate: data }; 
     } 
    }