第二个服务函数

时间:2016-05-17 13:50:02

标签: angularjs ionic-framework

我有服务:

.service('VacanciesService', function($http) {
var vacancies = [];
var usedVacancies = [];
return {
    getVacanciesForUniversity: function(university_id) {
        return $http.get("http://jobs.app/api/vacancies/" + university_id).then(function(response){
            vacancies = response.data.vcancies;
            return vacancies;
        }, function(error){
            return error;
        });
    },
    getRandomVacancy: function() {
        console.log(vacancies);
    }
}

})

这是呼叫控制器

.controller('jobsCtrl', function($ionicLoading, locker, UniversitiesService, VacanciesService) {
var vm = this;

user = locker.get('userDetails');
UniversitiesService.getUniversity(user.university.id).then(function(university) {
    vm.university = university.university;
});
    VacanciesService.getVacanciesForUniversity(user.university.id).then(function(vacancies) {
    vm.vacancies = vacancies;
}, function error(error) {

});

vm.addCard = function(name) {
    newVacancy = VacanciesService.getRandomVacancy();
};

vm.addCard();

})

我无法弄清楚为什么console.log中的空位变量在第二个函数中是空的?我假设它是在初始函数(称为先前函数)中设置的,它应该被填充?

TIA!

3 个答案:

答案 0 :(得分:0)

如果您拨打下面的getVacanciesForUniversity getRandomVacancy,您将获得空数组

VacanciesService.getVacanciesForUniversity(uniId)

VacanciesService.getRandomVacancy() //you will get empty

你必须在getVacanciesForUniversity里面getRandomVacancy返回承诺

 VacanciesService.getVacanciesForUniversity(uniId).then(function(){
       VacanciesService.getRandomVacancy()
 }) 

你错误地将response.data.vcancies;改为response.data.vacancies;

答案 1 :(得分:0)

答案是正确阅读您的代码。

在我的代码中有一个明显的错字,我错过了太长时间的盯着它。

非常感谢Daniel Dawes和aseferov试图提供帮助!

答案 2 :(得分:0)

在您的服务中:

getVacanciesForUniversity: function(university_id) {
    return $http.get("http://jobs.app/api/vacancies/" + university_id);
}

在您的控制器中:

 $scope.getVacancies = function () {
your_service.getVacanciesForUniversity().then(
    function(response) {
        if (response.status = 200) {
              $scope.vacancies = response.data.vacancies;
        }, function errorCallback (response) {
            ...
        }
);
};


$scope.getVacancies(); // you call one time your function here

$scope.getRandomVacancy : function() {
     console.log($scope.vacancies); 
}; 
相关问题