私は再帰的約束のウサギの穴を塞いでしまったのではないかと恐れている。角度はサービスからの成功のエラーをキャッチ
私のAPIを処理するサービスがあります。 (それは、アピがオフラインになったらローカルjsonに戻ることができるように、余分な約束を持っています。 次に、私のコントローラに約束された非同期呼び出しがあります。
これはすべて私がと期待しているデータを取得すると、と長くなりますが、エラーはうまく処理されません。私は400と500を取得するとき、toastr経由でエラーメッセージをユーザーに送信しません。
悲しいことに、これは完全に準拠したRESTful APIではありません。私は戻って取得400エラーは、私は本当にそれが必要として、これが動作するように取得する方法を取得し、(角のベストプラクティスごとなど)を/キャッチで成功/エラーを置き換えるものではありません単に
{"Message":"No packages found"}
です。
(私のデータグリッド(剣道)に返還データオブジェクトオプションれる):
var _getPackagesPage = function (options) {
var pageSize = options.data.pageSize;
var page = options.data.page -1;
return $q (function(resolve, reject) {
switch (dataSource) {
case 'api'://staging - live api data
return $http({
method: 'get',
url: serviceBase + 'api/Packages?pageSize=' + pageSize + '&page=' + page
}).then(function(results) {
resolve(results);
});
break;
default: // dev - local json
$.getJSON('Content/data/Packages.json', function (json) {
var pageSize = options.data.pageSize;
var page = options.data.page;
var newjson = json.splice(page*pageSize,pageSize);
resolve(newjson);
});
}
});
};
とコントローラでの一般的なコール:ここ
は、典型的なサービスコールでありますvm.getPackages = function(options) {
return packagesService.getPackagesPage (options)
.then(function(results) {
options.success(results.data.Items);
})
.catch(function(error) {
options.error(error);
toastr.error(error.Message);
});
};
これをどのようにクリーニングできますか?
[UPDATE]以下回答1当たりしようと修正、
サービス:
var _getOrdersPage = function (options) {
var deff = $q.defer();
var pageSize = options.data.pageSize;
var page = options.data.page -1;
return $http({
method: 'get',
url: serviceBase + 'api/Packages?pageSize=' + pageSize + '&page=' + page
})
.then(
function(results) {
deff.resolve(results);
},
function(ex){
deff.reject(ex);
});
return deff.promise;
};
コントローラ:で
vm.getOrders = function (options) {
return ordersService.getOrdersPage (options)
.then(function(results) {
console.log("results!");
console.log(results);
})
.catch(function(error) {
console.log("error!");
console.log(error);
});
};
結果:
GET HTTP: // < myURL>/api /パッケージ?pageSize = 20 &ページ= 0 400(不正リクエスト)
結果!
未定義
クリーンアップ何?あなたは、単一の、簡単な質問をすることができますか? – Amit
できたらいいなあ。サービスを使い、$ httpを呼び出して結果/エラーを返す*正しい方法が必要です。これはそうではありません。 – DaveC426913
'$ http'でjsonsを読み込むことができます。ちょうど言っている... –