У меня есть простой код здесь, который работает, однако я хотел бы показать успешные и обратные вызовы ошибок. Это мой код:
angular
.module('studentInfoApp')
.factory('Student', Student)
.controller('StudentsController', StudentsController)
.config(config);
function config($routeProvider) {
$routeProvider
.when('/', {
controller: 'StudentsController',
templateUrl: 'app/views/student-list.html'
})
}
function Student($resource) {
return $resource('/students');
}
function StudentsController(Student, $scope, $http) {
Student.query(function(data) {
$scope.students = data;
});
}
Как вы можете видеть, function Student()
просто возвращает ресурс, но я не могу получить успех и обратный вызов ошибки, если я использую, например, .then
. Я что-то упустил? Спасибо!
При использовании угловых $ ресурсов вы можете просто сохранить запрос непосредственно к вашей переменной. Затем он выполнит обещание и когда данные вернут сами данные.
Если вам нужно обрабатывать успех/ошибку, вы можете просто использовать сохраненное обещание и добавить успешные обратные вызовы, как показано ниже.
$scope.students = Student.query();
$scope.students.$promise.then( function(response) {
console.log('success');
}, function (error) {
console.log('error');
});
Вот решение:
Student.query(function(data, headers) {
// OK
$scope.students = data;
}, function(response) {
// KO
});
Другой, использующий обещание напрямую:
Student.query().$promise.then(function(response) {
// OK
$scope.students = response.data;
}, function(response) {
// KO
});
headers
- это функция, которая позволяет вам иметь доступ к заголовкам ответа, например, headers("Content-Type")
. См. Docs.angularjs.org/api/ngResource/service/$resource#usage , раздел Returns
.
Удалось заставить его работать, но если есть лучшие способы сделать это, не стесняйтесь публиковать его также. Это мой код сейчас:
function StudentsController(Student, $scope) {
Student.query(function(data) {
$scope.students = data;
})
.$promise.then(function successCallback(response) {
console.log('success');
}, function errorCallback(error) {
console.log('error');
});
}