我有服务:
.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!
答案 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);
};