2015-10-01 3 views
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, например. Я что-то упустил? Спасибо!

ответ

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

} 
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

Каково использование второго параметра (заголовков) в функции там? – FewFlyBy

+0

'headers' - это функция, которая позволяет вам иметь доступ к заголовкам ответов, например. 'Заголовки ("Content-Type")'. См. Https://docs.angularjs.org/api/ngResource/service/$resource#usage, раздел 'Возвращает'. – sp00m

+0

О, это хорошо. Спасибо! – FewFlyBy

1

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

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

$scope.students = Student.query(); 
$scope.students.$promise.then(function(response) { 
    console.log('success'); 
}, function (error) { 
    console.log('error'); 
}); 
+0

Спасибо за это. Оценил. – FewFlyBy

Смежные вопросы