構造化されていないjQueryアプリケーションをMVC AngularJSに変換しようとしていますが、ある時点でちょっと迷ったり、理解できなかったりします... (残念ながら私はJavaScriptの神ではないので、エラーもあるかもしれません)
これは、元の jQuery コードのスニペットです。
$.ajax({
type: "GET",
url: "rest/users/" + userId + "/requests",
accept: "application/json; charset=utf-8",
statusCode: {
200: function(data) {
// do something
},
404: function() {
window.location = 'index.html';
},
500: function() {
alert("Server Error!");
}
}
});
HTTP 応答コードを使用してナビゲートする単純な REST 呼び出し。残念ながら、これを AngularJS で実行することはできません。
これが私のコントローラーです:
// Inside the RequestController
$scope.requests = RequestModel.getRequestsByUser($rootScope.currentUser.userId);
if($scope.requests.statusCode == 200) {
// do something
}
else if($scope.requests.statusCode == 404) {
$location.path('/notFound');
} else if ($scope.requests.statusCode == 500) {
$location.path('/error');
}; // PROBLEM: The if/else statement is never true since statusCode is not available
ここに私のモデルがあります:
// Inside the RequestModel
this.getRequestsByUser = function(userId) {
var RequestResource = $resource('../rest/users/' + userId + "/requests");
var requestList = RequestResource.get({}, function(response, getResponseHeaders) {
// PROBLEM: The property "stausCode" is "unavilable" at the Controller even if it was set here
requestList.statusCode = 200;
console.log("SUCCESS: getRequestsByUser() -> StatusCode: requestList.statusCode");
console.log(requestList);
}, function(response, getResponseHeaders) {
requestList.statusCode = response.status;
console.log("FAILED: getRequestsByUser() -> StatusCode: " + response.status);
});
return requestList;
};
コントローラー内で「statusCode」が「使用不可」であるため、これは機能しません。REST 呼び出しは機能し、ビューへのデータ バインディングも問題ありません。「ナビゲーション部分」を実装できません。$watch プロパティ、非同期動作などを見逃しているのでしょうか、それとも私のアプローチが間違っているのでしょうか?!
ご協力いただきありがとうございます!