解决鸿蒙开发修改实体类某个字段,页面不刷新的问题
比如,我们要实现一个点击列表上的某个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,页面就会刷新