来自两个控制器的角度连接数据

Angular connecting data from two controllers

本文关键字:连接 数据 控制器 两个      更新时间:2023-09-26

我有两个调用,用于match和matches。Match获取一个特定匹配的数据,并匹配整个批次,以及一些相对评级。我需要将这些相对评分传递给匹配的特定匹配。

从不同的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
     }
   }
  ]

不知何故,正确的数据没有被传递,或者诸如此类。我一定是错过了什么,所以我很感激任何帮助。

您错过了承诺的成功功能。这时您就可以保证异步结果了。试试这个:

matchService.getMatchesForVacancy(vacancyId).then(function(d){
   // the return data is in "d"
   // do whatever you want with it
});