1

構造化されていない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 プロパティ、非同期動作などを見逃しているのでしょうか、それとも私のアプローチが間違っているのでしょうか?!

ご協力いただきありがとうございます!

4

1 に答える 1