2016-05-17 6 views
0

Ich habe einen Dienst:Leere var in der zweiten Servicefunktion

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

})

Das ist der Aufruf-Controller

.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(); 

})

Und ich kann nicht Finde heraus, warum die Variable vacancies in der console.log in der zweiten Funktion leer ist? Ich nahm an, wie es in der ursprünglichen Funktion (genannt Prior) festgelegt wurde, dass es bevölkert sein sollte?

TIA!

+0

Wer die 'VacanciesService.getVacanciesForUniversity' Funktion aufgerufen? – Saad

+0

Hier ist eine sehr einfache Geige, vergleichen Sie das, fügen Sie vielleicht mehr Protokollierung hinzu? http://jsfiddle.net/f6fem2h2/ –

Antwort

0

wenn Sie getVacanciesForUniversitygetRandomVacancy wie unten nennen, werden Sie leeres Array erhalten

VacanciesService.getVacanciesForUniversity(uniId) 

VacanciesService.getRandomVacancy() //you will get empty 

Sie müssen getRandomVacancy innerhalb getVacanciesForUniversity Versprechen zurück

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

alo Sie response.data.vcancies; statt response.data.vacancies;

+0

Dies ist nicht wahr. Laut meinem Beispiel: http://jsfiddle.net/f6fem2h2/ –

+0

in Ihrem Beispiel gibt es nicht axaj Anfrage – aseferov

0

Die Antwort misstype LESEN SIE IHREN CODE RICHTIG.

Es gab einen offensichtlich offensichtlichen Tippfehler in meinem Code, den ich vermisste, es zu lange zu betrachten.

Vielen Dank an Daniel Dawes und aseferov für den Versuch zu helfen!

+0

Ja, ich sehe ... vacancies = response.data.vcancies; –

0

In Ihren Diensten:

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

In Ihrem Controller:

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