2

我正在尝试添加一个 HttpInterceptor。在 AngularJS 我会写这样的东西:

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

但似乎 AngularDart 中没有配置功能。

配置 AngularDart 模块的正确方法是什么?

4

2 回答 2

4

HttpInterceptor 在 AngularDart 中的实现略有不同。

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 的方法。当引导的 angular-dart 应用程序已经启动了某些 Http 调用时,它可能会引入难以调试的计时错误,因此拦截器会错过这些调用。

使用拦截器的正确方法是确保在您的 Angular 应用程序中某处的第一次 Http 调用之前注入它。引导的新语法是这样的:

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

因此,在 YourAngularApp 中,无论您是Http第一次注入何处,都可以注入HttpInterceptor(仅一次)并添加您的自定义拦截器。

于 2014-08-02T15:26:23.717 回答