callback无法成功更新UI

我有一个如下的@state ViewModel,其中有一个成员变量title,直接在TestViewModel里延时修改title可以成功更新UI,而通过另外一个类的listener的callback修改同样的title不会更新UI,请问为什么,请问有什么办法解决么?期待您的回复,多谢多谢!

import { IBaseModelListener } from './IBaseModelListener'

export class TestViewModel implements IBaseModelListener {
  newsViewModel: NewsViewModel = new NewsViewModel(this)
  title: string = "aaa"

  onLoadFinish(data: string) {
    setTimeout(() => {
      this.title = "直接在TestViewModel里延时修改title可以成功更新UI,而通过另外一个类的listener的callback修改同样的title不会更新UI,请问有什么办法解决么?"
    }, 300)
  }

  refresh() {
    //通过另外一个类的listener的callback修改同样的title不会更新UI"
    this.newsViewModel.load()
/*    //"直接在TestViewModel里延时修改title可以成功更新UI"
    setTimeout(() => {
      hilog.error(0x0000, "Test", "直接在TestViewModel里延时修改title可以成功更新UI")
      this.title = "bbbb"
    }, 300)*/
  }
}

export class NewsViewModel {
  iBaseModelListener: IBaseModelListener = null;

  constructor(iBaseModelListener:IBaseModelListener) {
    this.iBaseModelListener = iBaseModelListener
  }

  load() {
    this.iBaseModelListener.onLoadFinish([])
  }
}
UI框架
UI
2024-04-16 12:56:37
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Betsty

有如下几个问题:

1.) 函数  onLoadFinish 定义是需要字符串, 而在调用时传递的是空数组

2.) onLoadFinish中用到了异步操作, 有可能refresh执行在其前。 是否可以加 asyn/await试试?

分享
微博
QQ
微信
回复
2024-04-16 15:13:07
相关问题
Js如何定义callback函数
340浏览 • 1回复 待解决
安装Apache成功后,为什么无法运行?
963浏览 • 1回复 待解决
NAN无法配网成功,设备侧联网失败
5971浏览 • 2回复 待解决
TS的Callback类型找不到怎么回事?
571浏览 • 1回复 待解决
JSBind 如何调用 JS 方法中的 callback
274浏览 • 1回复 待解决
aki是否支持C++虚函数和callback
123浏览 • 1回复 待解决
30s怎么更新什么时候更新
5344浏览 • 1回复 待解决
鸿蒙UI框架没有 C++的 UI框架
11439浏览 • 2回复 待解决
Ark UI 和Java UI 可以混合开发么?
2305浏览 • 1回复 待解决
支付成功后没有收到回调?
230浏览 • 1回复 待解决
有人升级成功鸿蒙了吗
5780浏览 • 2回复 待解决
DevEco Studio 不能直接更新
6829浏览 • 8回复 已解决
如何确认延迟任务是否申请成功
265浏览 • 1回复 待解决
定位是否必须联网才能成功
123浏览 • 1回复 待解决
什么时候荣耀更新鸿蒙
4885浏览 • 1回复 待解决
老机型更新鸿蒙2.0.0.230
3809浏览 • 2回复 待解决