解决鸿蒙开发修改实体类某个字段,页面不刷新的问题
·
比如,我们要实现一个点击列表上的某个item,实现点击选中,要改变这个item的背景色,这时候会遇到自己已经明明修改了代表选中的字段的值,但是样式没有刷新,解决方法如下:
修改前:
export class DzkyLineDateModelLocal{
date:string=""
week:string=""
isSelect: boolean = false;
monthDay: string = "";
constructor(date: string, week: string, isSelect: boolean, monthDay: string) {
this.date = date;
this.week = week;
this.isSelect = isSelect;
this.monthDay = monthDay;
}
}
修改后:
@ObservedV2
export class DzkyLineDateModelLocal{
date:string=""
week:string=""
@Trace isSelect: boolean = false;
monthDay: string = "";
constructor(date: string, week: string, isSelect: boolean, monthDay: string) {
this.date = date;
this.week = week;
this.isSelect = isSelect;
this.monthDay = monthDay;
}
}
注意,给实体类加 @ObservedV2 修饰符,给修改的字段加@Trace修饰符
一般到这里问题就会解决,但是如果你的实体类是通过服务端返回字符串JSON解析而来的实体类,那么这个时候@ObservedV2 @Trace修饰符就会无效。我只能用一个很不优雅的方法去解决它:
解决方法是:通过服务端解析JSON字符串拿到的实体类为modelA,这时候再复制一个字段一模一样的modelB(记得要加@ObservedV2和@Trace修饰符!),把modelA的值一个个的手动赋值给modelB,然后modelB的修饰符:@ObservedV2 @Trace 就会生效。列表的数据源采用modelB,页面就会刷新
更多推荐

所有评论(0)