Я пытаюсь преобразовать неструктурированное приложение jQuery в MVC AngularJS, но в какой-то момент я потерял или просто не понял ... (К сожалению, я не являюсь JavaScript-богом, поэтому ошибка может также быть там)Навигация по AngularJS по коду состояния HTTP. (MVC design)
Это фрагмент исходного кода 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!");
}
}
});
Простой вызов REST, в котором используется код ответа HTTP. К сожалению, я не могу сделать это в AnglularJS.
Вот мой контроллер:
// 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 properties, асинхронного поведения или мой подход просто некорректный ?!
Спасибо за помощь!
Привет, Дмитрий, большое вам спасибо! Теперь все работает :) Я никогда не думал о попытке моего решения не в том месте, просто попробовав его не так ... – GMB
Добро пожаловать, -) И только что заметил, что лучшим именем для свойств запросов в отношении изменений будет 'requestByUser 'без указания' get' - теперь он позволяет больше –