我在服务器端使用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"}
如何实现回调以查看对象而不是承诺?
答案 0 :(得分:1)
问题不在于你的回调实现。问题是您正在使用$resource
,它用于返回 JSON格式字符串的RESTful API资源,其服务返回没有结构化格式的纯文本。< / p>
解决方案1:
如果您能够更改WebAPI服务器返回的数据格式,则可以让它返回一个简单的JSON对象。它可能是这样的:
{"value": "101"}
然后,您的$resource
或多或少会按原样运作。
解决方案2:
如果您不能或不想修改您的WebAPI响应,则可以在Angular中使用$http
代替$resource
:
$http.get('example', {params: params});
这将用于检索纯文本响应,而不会像$resource
那样重复显示响应数据。
答案 1 :(得分:1)
确保您包含来自web api的application / json标头和json数据,看起来就像你一样。