我有两个电话,用于比赛和比赛。匹配获取一个特定匹配的数据,并匹配整个批次,以及一些相对评级。我需要将这些相对评级传递给匹配的特定匹配。
从不同API端点返回json数据的服务
function matchService($http, $q, API_URL) {
function getMatchesForVacancy(vacancyId) {
var deferred = $q.defer();
$http.get(API_URL + vacancyId + '/matches') //v2.0 lib
.then(function matchesArrived(matchData) {
deferred.resolve(matchData.data);
}, function matchesFailed(error) {
deferred.reject(error);
});
return deferred.promise;
}
function getMatchForVacancy(vacancyId, accountId) {
var deferred = $q.defer();
$http.get(API_URL + vacancyId + '/matches/' + accountId)
.then(function matchesArrived(matchData) {
//matchData.data.candidateRating = {overallScore: 0.65}; - ie. what I need to get
deferred.resolve(matchData.data);
}, function matchesFailed(error) {
deferred.reject(error);
});
return deferred.promise;
}
匹配和匹配显示在不同的视图中,因此我有单独的控制器文件。现在在单一匹配控制器中,我试图传递id为相同的特定评级。
所以我试图做的是在候选控制器中创建一个这样的函数:
function connectRating(vacancyId, match){
var matches = matchService.getMatchesForVacancy(vacancyId);
for(var i = 0; i < matches.length; i++){
if(matches[i].accountId === match.accountId){
match.candidateRating.overralScore = matches[i].candidateRating.overralScore;
return match;
}
}
}
匹配的json是这样的:
[
{
"accountId": 0,
"candidateRating": {
"overallScore": 0
}
}
]
不知何故,没有传递正确的数据,或者任何相关的数据。我一定错过了什么,所以我很感激任何帮助。
答案 0 :(得分:2)
您错过了承诺的成功功能。当您保证异步结果时,那就是这样。试试这个:
matchService.getMatchesForVacancy(vacancyId).then(function(d){
// the return data is in "d"
// do whatever you want with it
});