AngularJS回调函数不起作用

时间:2014-05-20 02:53:47

标签: angularjs asp.net-web-api callback angularjs-factory

我在服务器端使用WebAPI:

    public int Get(int productId)
    {
        //removed the actual logic to simplify the example
        return 101;
    }

The Angular:

$scope.showDetails = function (product) {
    $scope.selectedProduct = product;
    var queryArgs = { productId: product.id };
    $scope.averageQuantity = Quantity.query(queryArgs, function() {
        //callback function
        console.log($scope.averageQuantity); // this shows a promise instead of an actual object
        //and then open modal and pass the $scope as a parameter
    });
};

//the resource:
.factory('Quantity', ['$resource', function ($resource) {
return $resource('/api/quantity', {}, { 'query': { method: 'GET', isArray: false } });
}])

而不是数字101,我看到了承诺:{" 0":" 1"," 1":" 0", " 2":" 1"}

如何实现回调以查看对象而不是承诺?

2 个答案:

答案 0 :(得分:1)

问题不在于你的回调实现。问题是您正在使用$resource,它用于返回 JSON格式字符串的RESTful API资源,其服务返回没有结构化格式的纯文本。< / p>

解决方案1:

如果您能够更改WebAPI服务器返回的数据格式,则可以让它返回一个简单的JSON对象。它可能是这样的:

{"value": "101"}

然后,您的$resource或多或少会按原样运作。

解决方案2:

如果您不能或不想修改您的WebAPI响应,则可以在Angular中使用$http代替$resource

$http.get('example', {params: params});

这将用于检索纯文本响应,而不会像$resource那样重复显示响应数据。

Working Plunker demonstrating both methods

答案 1 :(得分:1)

确保您包含来自web api的application / json标头和json数据,看起来就像你一样。