0

サーバー側で WebAPI を使用しています。

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

角度:

$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"} という約束が表示されます。

プロミスではなくオブジェクトを表示するためにコールバックを実装するにはどうすればよいですか?

4

2 に答える 2

1

application/json ヘッダーと webapi からの json データが含まれていることを確認してください。そうではないようです。

于 2014-05-20T06:31:18.667 に答える
1

問題はコールバックの実装ではありません。問題は、JSON 形式の文字列$resourceを返す RESTful API リソースで使用することを意図した を使用していて、構造化された書式設定のないプレーンテキストを返すサービスを使用していることです。

解決策 1:

WebAPI サーバーが返すデータの形式を変更できる場合は、単純な JSON オブジェクトを返すようにすることができます。それは次のようなものかもしれません:

{"value": "101"}

その後、あなた$resourceは多かれ少なかれそのままの仕事になります。

解決策 2:

WebAPI 応答を変更できない、または変更したくない場合は、Angular$httpの代わりに使用できます。$resource

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

これは、応答データを変更することなく、プレーンテキストの応答を取得するために機能します$resource

両方の方法を示すワーキング プランカー

于 2014-05-20T04:25:25.250 に答える