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
相关问题
HarmonyOS Native怎么更新UI?
242浏览 • 1回复 待解决
安装Apache成功后,为什么无法运行?
2535浏览 • 1回复 待解决
使用js如何使用callback
340浏览 • 1回复 待解决
Js如何定义callback函数
2170浏览 • 1回复 待解决
NAN无法配网成功,设备侧联网失败
8422浏览 • 2回复 待解决
JSBind 如何调用 JS 方法中的 callback
1686浏览 • 1回复 待解决
嵌套Class的属性变化无法触发UI渲染
307浏览 • 1回复 待解决