Ionic 在服务器上获取数据后更新模型值

fivyi3re  于 2023-04-18  发布在  Ionic
关注(0)|答案(2)|浏览(105)

我有一个angular/ionic应用程序,我在其中发出服务器请求。在我获得数据后,我的模型(img src)应该将其默认值(assets/imgs/anyfile.jpg)更新为我的新值(server/new/image/path)
但是屏幕是在请求之后创建的,或者甚至在我不知道之前...
请求正在ngAfterViewInit上进行。
应该在哪里调用我的updateImageFunction(),以便我的图像可以使用新值更新..?
任何帮助都可以!谢谢
我不能提供代码,因为我在Angular和Ionic中使用PureMVC框架。没有通知和指令,我无法获得一段干净的代码。所以我会详细介绍一下。
1.应用程序加载了图像A和B,它们的路径来自Service.ts文件中的静态属性(assets文件夹中的默认路径);
1.发出一个请求(ngAfterViewInit),在那里我获得新的路径,并且更新Service.ts属性;
1.因为屏幕已经加载,图像已经从服务获得了路径(默认为静止),更新在所有这些之后进行。图像A和B没有更新
我想这是它的生命周期问题,但不知道如何解决它…

dba5bblo

dba5bblo1#

如果你使用的是httpClient,则angular中的服务器请求是冷可观察的。这意味着一旦http请求完成,订阅就会自动死亡。
为了让您始终拥有最新的数据并进行刷新,您需要做的是在发生导致更改的事件时,进行另一个http调用以重新加载数据。
我不能给予你一个具体的例子,因为你没有给出任何代码,但我希望这能有所帮助。

jfewjypa

jfewjypa2#

对我来说,替换图像的最好方法是像这样使用 ngIf

<img *ngIf="!imgOne" src="assets/placeholder.jpg" (click)="takePicture(1)"/>   
<img *ngIf="imgOne" [src]="imgOne" (click)="openPicture(1)" />

通过这样做,每当你替换 imgOne angular时,一定会更改它。
在哪里调用updateImageFunction()
当然是在响应之后。对 DB 的调用可以在 ngAfterViewInitionViewDidEnterngOnInit 甚至构造函数中。

相关问题