1

最近$resourceRESTサービスに使おうと思ったのですが、すぐに困ってしまいました。私は簡単なURLを持っています:

/r/インターフェイス/アクティブ化/:アクティブ/addr/:アドレス

ただし、単体テストで呼び出すと、次のように失敗します。

// expected: POST /r/interface/activate/false/addr/123
// got     : POST /r/interface/activate/false/addr/@address

私の定義されたリソースは次のとおりです。

module.factory('NetworkInterfaceActivationService', function ($resource) {
    return $resource("/r/interface/activate/:active/addr/:address", {}, {
        activate:{method:'POST', params:{active:"true", address:'@address'}, isArray:false},
        deactivate:{method:'POST', params:{active:"false", address:'@address'}, isArray:false}
    });
});

そして、これが私のサービスと呼ぶ方法です!

$scope.deactivateNetworkAddress = function (address) {
   NetworkInterfaceActivationService.deactivate({address:address});
};

何か不足していますか?

4

1 に答える 1

0

コードを Angular 1.3 で試しましたが、問題を再現できませんでした。

jsフィドル

<button ng-click="parentCtrl.doIt('123foobar')">execute</button>
app.controller('ParentCtrl', function (NetworkInterfaceActivationService) {
    this.doIt = function (address) {
        NetworkInterfaceActivationService.deactivate({address:address});
    };
})

app.factory('NetworkInterfaceActivationService', function ($resource) {
    return $resource("/r/interface/activate/:active/addr/:address", {}, {
        activate:{method:'POST', params:{active:"true", address:'@address'}, isArray:false}
    });
});

コンソールでの HTTP 呼び出し:

POST .../r/interface/activate/false/addr/123foobar

于 2014-09-20T09:16:14.150 に答える