ユーザーがデータを更新/作成した後にエラー/成功メッセージを表示する必要があるのは一般的なケースかもしれませんが、AngularJSでどのように実装できますか?
コールバックを追加したいのですが、解決策が見つかりませんでした。 $ http.post()。success()。error()を使用することはできますが、より高度なAPIである$ resourceを使用して実行できるかどうかは疑問です。
または、ディレクティブを作成するか、$ watch()を使用する必要がありますか?
事前にご協力いただきありがとうございます。
Resourceクラスからのアクションは、下位レベル$ httpサービスと同様に成功およびエラーコールバックを渡すことができます
非取得アクションには、$
というプレフィックスが付きます。
だからあなたはこれを行うことができます
User.get({userId:123}, function(u, getResponseHeaders){
// this is get's success callback
u.abc = true;
u.$save(function(u, putResponseHeaders) {
// This is $save's success callback, invoke notification from here
});
});
編集:ここに 以前のプランカーの別の例 があります。既存のjsonファイルを要求するため、get要求は失敗します。エラーコールバックが実行されます。
someResource.get(function(data){
console.log('success, got data: ', data);
}, function(err){
alert('request failed');
});
最新のAngularJSバージョンでは、$interceptors
の一部である $httpProvider
を見ることができます。
次に、送信する前または応答後にリクエストをすべてインターセプトできます。
angular.module('app').config(function($httpProvider){
$httpProvider.interceptors.Push(function($q) {
return {
'request': function(config) {
console.log('I will send a request to the server');
return config;
},
'response': function(response) {
// called if HTTP CODE = 2xx
console.log('I got a sucessfull response from server');
return response;
}
'responseError': function(rejection) {
// called if HTTP CODE != 2xx
console.log('I got an error from server');
return $q.reject(rejection);
}
};
});
});
config
またはresponse
を返さなければ動作しません。
rejection
の場合、インターセプト後も$http.get().error()
が機能するように、遅延拒否を返す必要があります。