2014-04-13 3 views
1

기본적으로 각도를 사용하여 json 파일에 대한 액세스 권한을 얻습니다. 여기서는 해당 이메일을 사용하여 사용자를 검색합니다. 그런 다음이 사용자를 찾아서 서비스 모듈에서 반환해야합니다. 그런 다음 반환 된 결과를 약속으로 받아야합니다.각도 서비스 모듈의 각도 약속 반환

userData.getUser(user.authenticationName) 
        .then(function(data) { 

이 때까지 여기에 지금까지없는 것을 ... 진전에게 시간

getUser: function(authenticationName) { 

      if(!(_.str.contains(authenticationName, "@"))) { 

       return resource.get({userName: authenticationName}).$promise; 
      } 
       else if(_.str.contains(authenticationName, "@")) { 

        resource.query().$promise.then(function(data) { 

         var emailsArray = [], 
          userNamesArray = []; 

         _.map(data, function(user){ emailsArray.push(user.email); }); 
         _.map(data, function(user){ userNamesArray.push(user.userName); }); 

         if(_.indexOf(emailsArray, authenticationName) !== -1) { 

          var indexOfUser = _.indexOf(emailsArray, authenticationName), 
           user = userNamesArray[indexOfUser]; 

          return resource.get({userName: user}); 

         } 

        }); 



       } 
     }, 

나는 "다음 정의되지 않은 방법을 호출 할 수 없습니다"얻을 각도 컨트롤러, 지난 몇입니다 나는 때문에의 정교화, 여기에서 사용자를 반환하고 resource.get() 메서드를 호출은 모든 미세

return resource.get({userName: user}); 
+1

당신은 resource.query 전에 돌아 잊었 (..) $의 promise.then? (그리고 그 후에 반환하는 경우에 던지기) –

+0

[that] (http://jsfiddle.net/5q9nQ/1/)는 무엇을 의미합니까? – user3127242

+0

예를 들어, 'if'를 입력하지 않으면 의미있는 일을해야합니다. 예를 들어 응용 프로그램 문제를 나타내는 오류가 발생했습니다. –

답변

0

당신은 새로운 약속을 반환 할 수 있습니다 할 수있는 경우 순간 모든 것이 괜찮습니다 else 성명.

각도의 $ q 또는 ES6의 약속을 사용하여 목표를 달성 할 수 있습니다.

인 getUser :.

function(authenticationName) { 

    var deferred = $q.defer(), 
     ret; 

    if(!(_.str.contains(authenticationName, "@"))) { 

    ret = resource.get({userName: authenticationName}); 
    deferred.resolve(ret); 
    } 
    else { 

    resource.query().$promise.then(function(data) { 

     var emailsArray = [],userNamesArray = []; 

     _.map(data, function(user){ emailsArray.push(user.email); }); 
     _.map(data, function(user){ userNamesArray.push(user.userName); }); 
     if(_.indexOf(emailsArray, authenticationName) !== -1) { 

     var indexOfUser = _.indexOf(emailsArray, authenticationName), 
           user = userNamesArray[indexOfUser]; 

     ret = resource.get({userName: user}); 
     deferred.resolve(ret); 

     } 

    }); 
    } 
}