0

serviceすべてのリクエストにa から文字列を付けたいと思います。試み:

'use strict';

angular.module('main')
    .service('Foo', function () {
        self.bar = 'haz';
    })
    .run(function ($injector, Foo) {
        $injector.get('$http').defaults.transformRequest = function (data, headersGetter) {
            headersGetter()['X-Bar'] = Foo.bar;
        };
    });

エラー: [ $injector:nomod] モジュール 'Foo' は利用できません! モジュール名のつづりを間違えたか、モジュールをロードするのを忘れました。モジュールを登録する場合は、依存関係を 2 番目の引数として指定してください。

注:私はui-router複数のファイルを使用しています。しかし1つmodule。それが違いを生むなら。

4

2 に答える 2

0

ng-app="main"モジュールをロードしようとしているというエラー メッセージが表示されるため、必ず HTML のどこかに記述してくださいFoo

次に、あなたのアプローチはほぼ正しいです。まず、selfFoo サービスにあるもの - use this. また、なぜ を使用するの$injectorですか? 直接注入するだけ$httpです...コードは次のとおりです。

angular.module('main')
   .service('Foo', function () {
      this.bar = 'haz';
   })
   .run(function ($http, Foo) {
      $http.defaults.transformRequest = function (data, headersGetter) {
         headersGetter()['X-Bar'] = Foo.bar;
      };
   });
于 2015-12-09T13:01:15.740 に答える
0

私の$injectorアプローチは次から取られました: http://engineering.talis.com/articles/elegant-api-auth-angular-js/

ドキュメントを見る: https://docs.angularjs.org/api/ng/service/ $http、これを書き直した方法は次のとおりです。

angular.module('main')
   .service('Foo', function () {
      this.bar = 'haz';
   })
   .run(function ($injector, Foo) {
      $injector.get('$http').defaults.headers.common['X-Bar'] = Foo.bar;
   });

これはうまくいきます。また、コードに別のバグがあり、それが問題の原因だったようです…それは真夜中のコーディングの問題です >.<

于 2015-12-09T23:17:57.323 に答える