HarmonyOS 对象内数组内对象属性的修改问题
如demo的层级关系,点击后向修改原对象内一个数组内对象的某个属性失败。
@Observed
export class ChannelColumn {
/**
* 对象唯一标识
*/
objectKey: string = ""
videoInfo_list: ObservedArray<TestInfo> = new ObservedArray()
}
@Observed
export class ObservedArray<T> extends Array<T> {
constructor(args?: T[]) {
if (args instanceof Array) {
super(...args);
} else {
super();
}
}
}
@Observed
export class TestInfo {
isFoldFor1003: boolean = true;
//vip频道改版
maintitle: string = '';
constructor(isFoldFor1003: boolean, maintitle: string) {
this.isFoldFor1003 = this.isFoldFor1003;
this.maintitle = maintitle
}
}
@Component
export struct AEnterTest {
@State @Watch('columnItemChange') columnItem: ChannelColumn = new ChannelColumn()
aboutToAppear(): void {
let videoInfo_list: ObservedArray<TestInfo> = new ObservedArray()
videoInfo_list.push(new TestInfo(false, '测试数据1'))
videoInfo_list.push(new TestInfo(false, '测试数据2'))
videoInfo_list.push(new TestInfo(false, '测试数据3'))
this.columnItem.videoInfo_list = videoInfo_list
}
columnItemChange() {
console.log("columnItemChange")
for (let i = 0; i < 3; i++) {
console.debug('修改结果=' + this.columnItem.videoInfo_list[i].maintitle + ':' +
this.columnItem.videoInfo_list[i].isFoldFor1003)
}
}
build() {
Row() {
ChannelBaseTemplateView({
columnItem: this.columnItem,
})
}
}
}
@Component
export struct ChannelBaseTemplateView {
@ObjectLink columnItem: ChannelColumn
build() {
SpecialPicText({ columnItem: this.columnItem })
}
}
@Component
export struct SpecialPicText {
@ObjectLink columnItem: ChannelColumn
build() {
Column() {
Text('测试点击刷新数组内的对象的属性问题')
.id('test')
.width('100%')
.height(50)
.align(Alignment.Center)
.onClick(() => {
this.columnItem.videoInfo_list[0].isFoldFor1003 = false;
}
)
}
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
- 77.
- 78.
- 79.
- 80.
- 81.
- 82.
- 83.
- 84.
- 85.
- 86.
- 87.
- 88.
HarmonyOS
赞
收藏 0
回答 1
相关问题
如何监听数组内对象属性变化
2799浏览 • 1回复 待解决
HarmonyOS 对象内数组排序问题
548浏览 • 1回复 待解决
HarmonyOS 对象A数组,对象A中又嵌套一个对象B数组,修改B中的属性UI,不刷新
1076浏览 • 1回复 待解决
HarmonyOS endable对象属性napi无法修改
412浏览 • 1回复 待解决
HarmonyOS 是否支持对象属性进行修改
366浏览 • 1回复 待解决
HarmonyOS 如何监听数组对象中元素属性的变化
758浏览 • 1回复 待解决
ArkUi关于page之间传递PixelMap对象,在Image对象内无法现实的问题有了解的吗?
5195浏览 • 1回复 待解决
HarmonyOS 如何获取一个对象内的所有变量
758浏览 • 1回复 待解决
HarmonyOS 对象数组在@state修饰时,对象属性变化界面不刷新的解决办法
518浏览 • 1回复 待解决
HarmonyOS 数组修改item对象的某个值,notifyDataReload无法重新渲染LazyForEach
574浏览 • 1回复 待解决
HarmonyOS 数组中对象的排序
683浏览 • 1回复 待解决
FA模型不支持进程内对象共享的原因?
847浏览 • 1回复 待解决
HarmonyOS @Observed装饰的类,构造了对象数组,那这个数组中对象的属性变化之后,能引起视图的更新吗
1612浏览 • 1回复 待解决
HarmonyOS 如何实现根据数组元素对象属性的变化同步更新UI
603浏览 • 1回复 待解决
HarmonyOS 关于数组包裹对象中更新组件问题
435浏览 • 1回复 待解决
HarmonyOS 数组对象数据刷新
546浏览 • 1回复 待解决
HAR包内的单例对象与HAR包相互之间依赖关系问题。
1352浏览 • 1回复 待解决
HarmonyOS 使用ObjectLink观察对象中的数组,修改数组长度,监听不到数据变化
1092浏览 • 1回复 待解决
为什么FA模型不支持进程内对象共享
2507浏览 • 1回复 待解决
HarmonyOS 关于objectLink在数组对象中使用时,修改数据页面不刷新问题
1241浏览 • 1回复 待解决
HarmonyOS @State可以修饰对象数组
425浏览 • 1回复 待解决
HarmonyOS @Watch 如何检测数组内元素变化
780浏览 • 1回复 待解决
HarmonyOS @state可以修饰对象数组么
391浏览 • 1回复 待解决
HarmonyOS 如何遍历对象属性
425浏览 • 1回复 待解决
HarmonyOS 如何修改H5内的localstorage
319浏览 • 1回复 待解决
只修改list中的元素属性无法被监听到,需要对整体的list元素了调整了才能监听到。或者只有@ObservedV2和@Trace修饰需要监听的类对象的属性,可以实现动态的UI刷新。
@ObservedV2文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-new-observedv2-and-trace-V5
代码调整如下: