15

奇妙かもしれませんが、モジュールのファクトリ メソッドを使用して $resource のデフォルトの POST データを指定する必要があります。

AngularJS でそれを行う方法を知っている人はいますか?

編集 :

さて、私はこのようなことをしたい:

/**
 * モジュール宣言。
 * @type {オブジェクト}
 */
var services = angular.module("services", ["ngResource"]);

/**
 ※商品ハンドラーサービス
 */
services.factory("製品", function($resource) {
    return $resource("http://someUrl", {}, {
        get : {method: "GET", params: {productId: "-1"}},
        update: {method: "POST", params:{}, data: {someDataKey: someDataValue} }
    });
});

data は、将来の POST リクエストのデフォルト データです。

4

7 に答える 7

20

これを行うとデータの一貫性が失われ、モデルに反映されないため、これは実際には角度のない方法ではありません。

なんで?

リソース ファクトリはオブジェクトを作成し、オブジェクト インスタンス データを POST として使用します。ドキュメントと angular-resource.js を確認しましたが、angular-resource.js を変更せずにリソースによって作成されるオブジェクトのデフォルトのカスタム プロパティを指定する方法はないようです。

あなたができることは次のとおりです。

services.factory("Product", function($resource) {
    return $resource("http://someUrl", {}, {
        get   : {method: "GET", params: {productId: "-1"}},
        update: {method : "POST"}
    });
});

そしてあなたのコントローラーで:

$scope.product = {}; // your product data initialization stuff
$scope.product.someDataKey = 'someDataValue'; // add your default data

var product = new Product($scope.product);
product.$update();
于 2013-04-25T23:25:08.347 に答える
0

これで問題が解決するでしょうか?

services.factory("Product", function($resource) {
  return $resource("http://someUrl", {}, {
    get   : {method: "GET", params: {productId: "-1"}},
    update: {method : "POST", params:{}, data: {someDataKey: someDataValue}}
  });
});
services.factory("DefaultProduct", function(Product) {
  return function(){
     return new Product({
        data:"default";
     });
  };
});
services.controller("ProductCTRL",function($scope,DefaultProduct){
  $scope.product = new DefaultProduct();
});
于 2013-04-29T11:13:30.520 に答える
0

ラッパー関数が動作します。

function myPost(data) {
  return $http.post('http://google.com', angular.extend({default: 'value'}, data))
}

myPost().success(function(response) { ... });
于 2012-06-28T13:56:24.527 に答える