Angularjs 已解析的资源承诺不包含任何数据

Angularjs 已解析的资源承诺不包含任何数据,angularjs,asp.net-web-api2,ngresource,Angularjs,Asp.net Web Api2,Ngresource,我有一个Web Api控制器,其中包含以下方法: [Route("CountThings/{id}")] [HttpGet] public async Task<IHttpActionResult> CountThings(int id) { //var numberOfThings = await _thingsRepository.CountThingsAsync(id); return Ok(123456); } 在我的角度控制器中,我有: thingsRes

我有一个Web Api控制器,其中包含以下方法:

[Route("CountThings/{id}")]
[HttpGet]
public async Task<IHttpActionResult> CountThings(int id)
{
    //var numberOfThings = await _thingsRepository.CountThingsAsync(id);
    return Ok(123456);
}
在我的角度控制器中,我有:

thingsResource.getCountThings({ id: scope.id })
.$promise
.then(function (data) {
    console.log(data);
    scope.numberOfThings = data;
 });
当我调试我的应用程序时,我可以看到API控制器被调用并正确返回。在我的角度控制器中,当我记录数据时,我可以看到承诺已得到解决。但是,我找不到一种方法来获取应该返回的数据(123456)。如果我记录数据。$resolved,则返回true


如何访问要在控制器中使用的数据?

使用angular
$resource
无法获取基本体。尝试从服务器返回json对象(如
{data:123456}
):

请参见此说明以及为什么资源必须是对象

另一种选择是使用
$http
服务:

$http.get(controllerPath + 'CountThings/' + scope.id).then(function (result) {
    scope.numberOfThings = result.data;
});

在这种情况下,您不需要修改服务器上的任何内容。

重要的是要认识到调用对象方法会立即返回空引用(对象或数组取决于
isArray
)。从服务器返回数据后,现有引用将填充实际数据

在引擎盖下,AngularJS使用。删除所有目标元素(对于数组)或属性(对于对象),然后将源中的所有元素/属性复制到其中。如果源是基元,则不会复制任何内容。解析的对象或数组将没有数据


使用AngularJS
$resource
无法获取原语

thingsResource.getCountThings({ id: scope.id })
.$promise
    .then(function (result) {
        scope.numberOfThings = result.data;
    });
$http.get(controllerPath + 'CountThings/' + scope.id).then(function (result) {
    scope.numberOfThings = result.data;
});