Aurelia:在main.js中配置并使用fetch

Aurelia:在main.js中配置并使用fetch,aurelia,aurelia-fetch-client,Aurelia,Aurelia Fetch Client,我之前发布了一个关于如何配置Aurelia的fetch客户端以及如何在我的所有viewModels()中使用配置的客户端的问题 我在main.js文件中配置fetch客户端。现在,我想在main.js中使用这个配置相同的获取客户端。我无法注入客户端实例,因为它将在注入后定义 import {HttpClient} from 'aurelia-fetch-client'; export function configure(aurelia) { this.jsonobj = { 'opera

我之前发布了一个关于如何配置Aurelia的fetch客户端以及如何在我的所有viewModels()中使用配置的客户端的问题 我在main.js文件中配置fetch客户端。现在,我想在main.js中使用这个配置相同的获取客户端。我无法注入客户端实例,因为它将在注入后定义

import {HttpClient} from 'aurelia-fetch-client';
export function configure(aurelia) {
 this.jsonobj = {
  'operation':'verify'
 };

 aurelia.use
 .standardConfiguration()
 .developmentLogging();

 let container = aurelia.container;
 let http = new HttpClient();
 http.configure(config => {
  config
    .useStandardConfiguration()
    .withInterceptor({
      request(request) {
          request.headers.set('token', window.localStorage.getItem('token'));
        return request;
      }
    });
 });
 container.registerInstance(HttpClient, http);

 aurelia.start().then(
  a => {
   this.http.fetch('dist/components/api.php', {
    credentials: 'include',
    method: 'post',
    body: JSON.stringify(this.jsonobj)
   })
  .then(response =>  response.json())
  .then(data => {
    if (data.error==='true') {
      a.setRoot('login');
    }else {
      a.setRoot('app');
    }
   });
 });
}

我认为您的大部分代码都是正确的,只需删除
this.http.fetch上的
this.
('dist/components/api.php',…
line。我在发布一分钟后就想出来了,但一直没有回答这个问题:通常我导入http客户端并将其注入我的viewModel。在上面的代码中,创建http对象只需要一行代码。为什么我们必须注入它(即使用Aurelia的DI容器)如果自己创建它很简单的话。我也读了一些关于DI容器如何工作的文章。我们使用DI是因为http客户端只有一个副本(即它是一个单实例)。如果是这样的话,“container.registerInstance(…)中就没有意义了对吗?我认为您的大部分代码都是正确的,只需删除
this.http.fetch上的
this.
('dist/components/api.php',…
line。我在发布一分钟后就想出来了,但一直没有回答这个问题:通常我导入http客户端并将其注入我的viewModel。在上面的代码中,创建http对象只需要一行代码。为什么我们必须注入它(即使用Aurelia的DI容器)如果自己创建它很简单的话。我也读了一些关于DI容器如何工作的文章。我们使用DI是因为http客户端只有一个副本(即它是一个单实例)。如果是这样的话,“container.registerInstance(…)”就没有意义了,对吗?