AngularJS $ ресурс успешно и обратный вызов ошибок

0

У меня есть простой код здесь, который работает, однако я хотел бы показать успешные и обратные вызовы ошибок. Это мой код:

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. Я что-то упустил? Спасибо!

Теги:

3 ответа

1

При использовании угловых $ ресурсов вы можете просто сохранить запрос непосредственно к вашей переменной. Затем он выполнит обещание и когда данные вернут сами данные.

Если вам нужно обрабатывать успех/ошибку, вы можете просто использовать сохраненное обещание и добавить успешные обратные вызовы, как показано ниже.

$scope.students = Student.query();
$scope.students.$promise.then( function(response) {
     console.log('success');
}, function (error) {
    console.log('error');
});
  • 0
    Спасибо за это. Оценил.
1

Вот решение:

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
});
  • 0
    Какая польза от второго параметра (заголовков) в этой функции?
  • 0
    headers - это функция, которая позволяет вам иметь доступ к заголовкам ответа, например, headers("Content-Type") . См. Docs.angularjs.org/api/ngResource/service/$resource#usage , раздел Returns .
Показать ещё 1 комментарий
0

Удалось заставить его работать, но если есть лучшие способы сделать это, не стесняйтесь публиковать его также. Это мой код сейчас:

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');
    });

}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню