2

HttpInterceptor を追加しようとしています。AngularJS では、次のように記述します。

m.config(["$httpProvider", function($httpProvider) {...}])

しかし、AngularDart には設定機能がないようです。

AngularDart モジュールを構成する正しい方法は何ですか?

4

2 に答える 2

4

AngularDart では、HttpInterceptor の実装が少し異なります。

main() {
  // define your interceptor
  var intercept = new HttpInterceptor();
  intercept.request = (HttpResponseConfig requestConfig) => /* something */;
  intercept.response = (HttpResponse response) => /* something */;
  intercept.requestError = (dynamic error) => /* something */;
  intercept.responseError = (dynamic error) => /* something */;

  // get hold of the HttpInterceptors instance -- there are many ways to do this.
  Injector injector = ngBootstrap(/* ... */);
  var interceptors = injector.get(HttpInterceptors);

  // register/add your interceptor
  interceptors.add(intercept)
}

API の詳細:

http://ci.angularjs.org/view/Dart/job/angular.dart-master/javadoc/angular.core.dom/HttpInterceptors.html http://ci.angularjs.org/view/Dart/job/angular .dart-master/javadoc/angular.core.dom/HttpInterceptor.html

于 2013-11-19T18:54:19.733 に答える
3

@pavelgj による回答は、HttpInterceptors を使用する完全に正しい方法ではありません。特定の Http 呼び出しがブートストラップされた angular-dart アプリによって既に開始されている場合、デバッグが困難なタイミング エラーが発生する可能性があるため、インターセプターはそれらの呼び出しを見逃す可能性があります。

インターセプターを使用する正しい方法は、angular アプリ内のどこかで最初の Http 呼び出しの前にインターセプターを挿入することです。ブートストラップの新しい構文は次のとおりです。

applicationFactory()
  .addModule(new YourAngularApp())
  .run();

そのため、YourAngularApp 内Httpで、初めて注入する場合はいつでも、HttpInterceptor(1 回だけ) を注入して、カスタム インターセプターを追加できます。

于 2014-08-02T15:26:23.717 に答える