HarmonyOS 鸿蒙Next 电影卡片(ArkTS)demo中globalThis.listMovieData一直是空的
HarmonyOS 鸿蒙Next 电影卡片(ArkTS)demo中globalThis.listMovieData一直是空的
电影卡片(ArkTS) (huawei.com)中的demo,如果新增通过http 获取到服务器数据列表并赋值给globalThis.listMovieData后,在CommonUtils这个工具里的
getListData方法为什么还仅仅是获取本地的数据?globalThis.listMovieData一直是空的.
为什么获取不到数据?
有没有人帮助解决下,这个不搞好,卡片搞不来啊
更多关于HarmonyOS 鸿蒙Next 电影卡片(ArkTS)demo中globalThis.listMovieData一直是空的的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
会不会是没有在合适的生命周期内调用http请求,比如项目启动后,是先走CommonUtils里的getListData函数,然后再走你写的http请求,然后由于先走CommonUtils里的getListData,全局变量listMovieData有值了,就没有更新到你写的http请求返回的数据。
在已经创建好的原有工程API9的基础上,我有添加创建了卡片。那么这个卡片的EntryFormAbility和EntryAbility这两个谁执行呢。我是在EntryFormAbility调用CommonUtils.getListData();
这个工具方法获取服务器端数据,在EntryAbility里跳转http请求的ets来从服务器获取真正的数据,并想子卡片上展示真正的服务器列表数据。这两个EntryAbility和EntryFormAbility谁先执行?
那么用什么来代替globalThis
,比较好呢,用来解决卡片获取接口数据的问题
卡片上的数据,还有卡片信息,最好保存到关系型数据库里。
希望HarmonyOS能继续优化系统稳定性,减少崩溃和重启的情况。
Stage模型是否推荐使用globalThis获取Context
适用于:HarmonyOS 3.1 Beta API 9
不推荐,Stage模型使用globalThis去获取Context是错误的使用方式。
在Stage模型中,整个应用进程共用一个js虚拟机实例,其中可以运行多个Ability实例,共用一个global对象。在同一个js虚拟机内的不同的Ability中使用globalThis获取Context,存在被覆盖从而发生错误的风险
Ability框架开发-基于ArkTS开发常见问题-常见问题-HarmonyOS应用开发
是不是这个上面的愿意 ?
原因,
或者最终问下,你们给的demo只有读取本地demo的数据,如何再ets文件里读取服务器端的数据并在卡片上展示,你们是如何处理的?
你可以参考Codelabs里服务卡片,如何从关系型数据库获取数据来更新卡片的,
this.getDataList();这个执行http的接口方法在aboutToAppear()方法中执行


UIAbility和FormExtensionAbility不在同一个进程中。
你是在UIAbility中使用http获取的数据?UIAbility和Form中的globalThis不是同一个,建议看下进程模型。
我是在一个ets文件的aboutToApppear()方法中执行的http请求的,
假如不是同一个globalThis,我该如何才能将ets文件里赋值的globalThis数据,在Form卡片中展示呢
是的,我本来已经从aboutToAppear中执行http请求到了真正的服务器端的数据,并且打印了出来,并且赋值给globalThis。这个globalThis也有值了,但是当我进行上滑图标显示卡片时,显示的还是本地存储的数据,而不是服务器端的数据。或者说如果我想将服务器端真正的数据展示到卡片上,应该在哪里调用执行http请求?
在更新卡片函数方法里请求数据,并返回给卡片。
学习
在HarmonyOS 鸿蒙Next 电影卡片(ArkTS)demo中,如果globalThis.listMovieData
一直是空的,这通常意味着数据没有被正确初始化或赋值。可能的原因及解决方向如下:
-
数据初始化问题:检查
globalThis.listMovieData
的初始化位置,确保在组件加载或数据请求前,该变量已被正确初始化。例如,可以在组件的onCreate
或类似生命周期方法中初始化一个空数组或对象。 -
数据赋值问题:确认数据请求的逻辑是否正确执行,并且请求成功后是否有将数据赋值给
globalThis.listMovieData
。检查网络请求、数据解析等步骤是否有误。 -
异步数据处理:如果数据请求是异步的,确保在数据到达并处理后再进行界面更新。可以使用状态管理或回调机制来处理异步数据。
-
作用域问题:确认
globalThis.listMovieData
在全局作用域中可访问,且没有被其他代码意外修改或覆盖。 -
调试和日志:增加日志输出,查看数据请求和处理过程中的关键变量值,帮助定位问题。
如果以上检查均未能解决问题,可能是代码中存在其他未注意到的逻辑错误或配置问题。此时,建议仔细复查代码逻辑,或参考官方文档和示例代码。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html,