【问题标题】:Updating model value after get data on server在服务器上获取数据后更新模型值
【发布时间】:2018-06-24 05:52:45
【问题描述】:

我有一个角度/离子应用程序,我在其中发出服务器请求。 获取数据后,我的模型(img src)应该将其默认值(assets/imgs/anyfile.jpg)更新为我的新值(server/new/image/path)

但是屏幕是在请求之后创建的,甚至在我不知道之前...

正在 ngAfterViewInit 上发出请求。

应该在哪里调用我的 updateImageFunction() 以便可以使用新值更新我的图像..?

任何帮助都可以!谢谢

--

我无法提供代码,因为我在 Angular 和 Ionic 中使用 PureMVC 框架。如果没有通知和指令,我就无法获得一段干净的代码。所以我会详细一点。

  1. 应用加载了图片 A 和 B,其路径来自 Service.ts 文件中的静态属性(assets 文件夹中的默认路径);

  2. 发出请求(ngAfterViewInit),我在其中获取新路径并更新 Service.ts 属性;

  3. 因为屏幕已经加载,图像已经从服务中获得了路径(默认仍然),并且更新是在这一切之后。图片 A 和 B 没有更新

我认为它的生命周期问题,但不知道如何解决它...

【问题讨论】:

  • 服务器请求完成后调用
  • 你有一些上下文代码吗?
  • @MikeTung 我编辑了这个问题。但是不能提供代码,真的很抱歉:(

标签: angular ionic-framework


【解决方案1】:

如果您使用 httpClient,角度服务器请求是冷可观察的。这意味着一旦 http 请求完成,订阅就会自动终止。

为了让您始终拥有最新的数据并进行刷新,您需要做的是在导致更改的事件上再次进行 http 调用以重新加载数据。

我不能给你一个具体的例子,因为你没有提供任何代码,但我希望这会有所帮助。

【讨论】:

    【解决方案2】:

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

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

    通过这样做,每当您替换 imgOne angular 都会确保更改它。

    应该在哪里调用我的 updateImageFunction()

    当然是在响应之后。对 DB 的调用可以在 ngAfterViewInitionViewDidEnterngOnInit 甚至构造函数内部。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-13
      • 1970-01-01
      相关资源
      最近更新 更多