これは何らかの方法で明白であればよろしいですが、anglejs docsやSOのようなものは似ていないようです。私は月ごとの見積もりを含むデータテーブルがあるアプリケーションを持っています。いくつかの素早い変更を行う方法として、推定値を1か月にドラッグアンドドロップすることができるものを実装しています。しかし、私は編集する必要がangularjsのネストされたリソース呼び出しの問題
function updatableResource(url){
return $resource(url+":id/", {id: '@id'},
{
'update': {
method:'PUT',
},
}
);
}
// in API definition file
Estimate: foo.updatableResource('<URL>'),
正常に動作し、私は通常
この場合、無問題で$update
または$save
を呼び出すことができます。
リソース:私は奇妙な問題に実行していますよ同時に2つのものを削除し、場合によっては削除することもできます。だから、私は第二をやる前に最初のものが成功したかどうかを知る必要があります。たとえば、見積もりなしで推定値を1か月から別の値に移動すると、最初に新しい見積もりを作成し、古い見積もりを削除します。
// source and target are objects that each contain an estimate from a different month.
successFunc = function() {
source.estimate.$delete(
function() {
<refresh stuff>
},
function(rejection) {
alert("Unable to delete source estimate.");
}
);
};
errorFunc = function(rejection) {
<undo stuff>
alert("Unable to add money to target estimate.");
};
// POST if new, PUT if updating
if (isNewEstimate) {
target.estimate.$save(successFunc, errorFunc);
} else {
target.estimate.$update(successFunc, errorFunc);
}
だから、このコードでは、見積作成/更新が正常に動作しますが、私は成功機能でソース推定上の任意の$リソースコールを呼び出すことはできません。私はこのような何かを行うことができると思います。私はエラーTypeError: source.estimate.$delete is not a function
を取得します。私はその関数の外で(ターゲットsave/update呼び出しと同じレベルで)呼び出すと動作します。私の研究では
は、私は一種の働いていた何かが見つかりました:
Api.Estimate.delete(source.estimate,
<success and failure functions>
...
削除作業をしたが、何も他の削除を認識しているようだと私はために高価な手動の再クエリを実行する必要がありますそれは機能する。それがコールバック関数にあるので、スコープについて何か奇妙なことはありますか?オブジェクト自体に問題があると思われる、さらなるテストの際に
:それはその関数内で動作しませんなぜ私はちょうど...
EDITを把握することはできません
source.estimate
Object
amount: 12345
date: "2017-02-25"
foo: "ABC"
id: 4715
bar: 987
baz: 123
__proto__: Object
target.estimate
d
$promise: undefined
$resolved: true
amount: 12345
date: "2017-03-25"
foo: "ABC"
id: 4716
bar: 987
baz: 123
__proto__: Object
したがって、タイプd
のターゲットは動作しているように見えますが、ソースオブジェクトの1つは標準オブジェクトだけです。ドラッグ方向を逆にすると、同じタイプの結果が得られます。ソースは常にオブジェクトで、ターゲットは常にd
です(これは縮小されたJSのためです)。 $リソースオブジェクトの
私は$ resourceを使用しているときにこの問題に遭遇しました...これは私がまっすぐな$ httpに切り替えた理由ですが、Console.log(source.estimate)には実際にその時点で値がありますか? – Dylan
上記の編集で追加したように、オブジェクトは通常のように見えましたが(フィールドと値が期待されていたように)、実際のオブジェクトは異なります。 – zaknotzach