2013-10-15 7 views
0

나는 Yeoman을 사용하여 AngularJS 앱을 설치했습니다. 앱에서 HTTP Basic Authentication 뒤에 API 호출을해야합니다. this tutorial을 따라 내 HTTP 헤더를 수정하고 uername과 암호를 인코딩하는 방법을 알아 냈습니다. 그러나 내 API 서비스에서 Base64.encode을 호출하는 방법을 알 수 없습니다. 내가 시도한 모든 것은 나에게 계속 ReferenceError: Base64 is not defined 오류를주고있다.AngularJS의 서비스에서 공장으로 전화하는 방법

// app/scripts/api.js 
angular.module('api.ClientApp', ['base64']). 
    service('$api', function($http, $q, $cookieStore, $rootScope, $location, $window, $sniffer) { 
     var $api = this; 

     this.set_http_auth = function(obj) { 
      if(obj){ 
       $http.defaults.headers.common['Authorization'] = 'Basic ' + 
        Base64.encode(obj.username + ':' + obj.password); 
      } else { 
       delete $http.defaults.headers.common['Authorization']; 
      } 
     }; 
    }); 

Base64로 공장 :

// app/scripts/services/Base64.js 
angular.module('base64', []) 
    .factory('Base64', function() { 
     return { 
      encode: function (input) { 
       var output = ""; 
       // ... 
       return output; 
      }, 

      decode: function (input) { 
       var output = ""; 
       // ... 
       return output; 
      } 
     }; 
    }); 

에 Index.html :

내 API 서비스, Base64.encode() 오류 던져 라인이 라인에서

<!-- app/index.html --> 
<script src="scripts/app.js"></script> 
<script src="scripts/services/Base64.js"></script> 
<script src="scripts/api.js"></script> 
<script src="scripts/controllers/signin.js"></script> 

답변

4

,210 당신은 Base64로 서비스를 주입 할 필요가

- 즉

service('$api', function($http, $q, $cookieStore, $rootScope, $location, $window, $sniffer, Base64) { 
+0

감사합니다! 나는 그런 간단한 해결책을 위해 너무 길게 보냈다. 나는 너무 가까웠다! – lightswitch05

관련 문제