![](/img/trans.png)
[英]How to call a factory method from another service method in angularjs?
[英]How to call a factory from a service in AngularJS
我有一個使用Yeoman設置的AngularJS應用。 在應用程序中,我需要進行HTTP Basic Authentication
背后的API調用。 我按照本教程進行操作,以了解如何修改HTTP標頭以及對用戶名和密碼進行編碼。 但是,我不知道如何從我的API服務中調用Base64.encode
。 我嘗試過的所有內容都會一直給我提供ReferenceError: Base64 is not defined
錯誤。
我的API服務Base64.encode()
是引發錯誤的行:
// 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的:
<!-- 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>
在這條線
service('$api', function($http, $q, $cookieStore, $rootScope, $location, $window, $sniffer) {
您需要注入Base64服務-即
service('$api', function($http, $q, $cookieStore, $rootScope, $location, $window, $sniffer, Base64) {
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.