我有两个屏幕:
这是我的错误的重演:
我认为有意的行为是每个服务都注入到屏幕中,注入时不会随机注入下一个屏幕。
这是github的项目:https://github.com/DiegoGallegos4/aurelia-test;
我使用以下模式:
@inject(Screen1Service)
export class Screen1{
constructor(service){
this.service = service
}
...service use to fetch/post data
}
如果需要复制品,请告诉我,我可以使用承诺制作一个要点。但是,我不知道导航是否可用于gist。
答案 0 :(得分:0)
服务注入确实是正确的。问题在于这些服务使用HttpClient
的方式。
每个服务类在其构造函数中配置HttpClient
。由于单个HttpClient
注入所有服务,后者创建服务覆盖以前的配置。而且,每个服务本身都是单例,因此它的构造函数和HttpClient
配置只运行一次。
因此,导航顺序很重要。从Screen1导航时 - >屏幕2 - >回到Screen1,Service2中的最后一个配置有效。如果您将序列更改为Screen2 - >屏幕1 - >屏幕2,您将观察到相反的情况。
要解决此问题,您应该只在一个地方配置HttpClient
,例如main
或app
。见discussion