簡體   English   中英

如何從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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM