0

私は Angularjs を学んでおり、すべてのコントローラーに対して実行する必要がある一般的なタスクを実行するサービスを作成しようとしています。

現在、次のエラーが発生しています。

TypeError: Cannot call method 'getAuthHeader' of undefined

app.js

var token = "mytoken"
var baseUrl = "mybaseUrl";

var myezteam = angular.module('myezteam', ['ui.bootstrap']);

myapp.config(function($routeProvider) {
    $routeProvider
        .when('/profile', 
            {
                controller: 'ProfileController',
                templateUrl: 'template.html'
            })
        .otherwise({redirectTo: '/profile'});
});

// This gets the basic information that is needed for every page
myapp.service('base', function() {

    this.getAuthHeader = function($http) {
        // Set authorization token so we know the user has logged in.
        return $http.defaults.headers.common.Authorization = 'Bearer ' + token;
    }
});

profile.js

 myapp.controller('ProfileController', ['$scope', '$http', function($scope, $http, base) {

        base.getAuthHeader($http);  // <-- THIS LINE IS THROWING THE ERROR
    }]);

エラーが発生する理由と修正方法を教えてください。また、すべてのコントローラーを呼び出す必要がないように、アプリで構成をセットアップする方法はありますがbase.getAuthHeader($http);、すべてのコントローラーが読み込まれると自動的に呼び出されますか?

4

1 に答える 1

2

baseサービスをコントローラーに注入していません。と同じ方法で注入する必要があり$scopeます$http

myapp.controller('ProfileController', ['$scope', '$http', 'base', 
    function($scope, $http, base) { ... });
于 2013-11-11T01:05:18.193 に答える