网站文风,17模板网网页,建筑企业网站要简约大气吗,5566网址大全设首页1、HarmonyOS 应用新建子窗口设置显示方向未生效#xff1f;
子窗口getPreferredOrientation获取到的是横向 设置没问题#xff0c;但是ui显示还是纵向的
直接设置主窗口的方向即可。参考demo#xff1a;
import window from ohos.window;Entry
Component
struct Index {…1、HarmonyOS 应用新建子窗口设置显示方向未生效
子窗口getPreferredOrientation获取到的是横向 设置没问题但是ui显示还是纵向的
直接设置主窗口的方向即可。参考demo
import window from ohos.window;Entry
Component
struct Index {State message: string Hello World;build() {Row() {Column() {Text(反向横屏).fontSize(50).fontWeight(FontWeight.Bold).onClick(async (){try {const topWindow await window.getLastWindow(getContext(this));console.info(Succeeded in obtaining the top window. Data: JSON.stringify(topWindow));await topWindow.setPreferredOrientation(window.Orientation.LANDSCAPE_INVERTED);console.info(Succeeded in setting window orientation.);} catch (error) {console.error(Failed to obtain or set the top window. Cause: JSON.stringify(error));}/*window.getLastWindow(getContext(this),(err,win){win.setPreferredOrientation(window.Orientation.LANDSCAPE_INVERTED)})*/})Text(竖屏).fontSize(50).fontWeight(FontWeight.Bold).onClick(async (){try {const topWindow await window.getLastWindow(getContext(this));console.info(Succeeded in obtaining the top window. Data: JSON.stringify(topWindow));await topWindow.setPreferredOrientation(window.Orientation.PORTRAIT);console.info(Succeeded in setting window orientation.);} catch (error) {console.error(Failed to obtain or set the top window. Cause: JSON.stringify(error));}/*window.getLastWindow(getContext(this),(err,win){win.setPreferredOrientation(window.Orientation.PORTRAIT)})*/})}.width(100%)}.height(100%)}
}2、HarmonyOS RichEditor 内容不居中显示
参考代码
RichEditor({ controller: this.controllerRich}).width(100%).height(40).layoutWeight(1).borderRadius(10).backgroundColor(Color.Red).margin({ top: 20 ,left:14,bottom:5}).key(RichEditor).id(id).placeholder(平台提倡文明用语请温柔发言哦~,{font:{size:12},fontColor:#999999}).defaultFocus(true).onReady(() {this.controllerRich.addTextSpan(0123456789\n, {style: {fontColor: Color.Pink,fontSize: 32,},paragraphStyle: {textAlign: TextAlign.Center,leadingMargin: 16}})})3、HarmonyOS injectOfflineResources与precompileJavaScript区别
相较于precompileJavaScript injectOfflineResources也是指的把本地资源文件作为缓存给web使用吗底层实现有区别吗哪种性能会更好一些
injectOfflineResources将本地离线资源注入到内存缓存中以提升页面首次启动速度precompileJavaScript预编译JavaScript生成字节码缓存或根据提供的参数更新已有的字节码缓存这两个接口无论从用途、定义还是底层实现都完全是两个接口前者是将资源注入到内存缓存后者是将js编译成字节码缓存性能上也没有可比性参考链接https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-webview-V5#ZH-CN_TOPIC_0000001930676933__precompilejavascript12
4、HarmonyOS 在ArkTS中想要将JSON 转为Class后Class 中的function 方法丢失了
语法问题JSON.parse() 方法返回的是一个普通对象而不是 DataBean 类的实例。不包含类定义的任何方法。需要在将 JSON 数据转换为 DataBean 实例时手动创建类的实例并将 JSON 对象的属性赋值给类的实例。参考
class DataBean {code -1;msg ;isOK() {return this.code 0;}// 静态方法从 JSON 字符串创建 DataBean 实例static fromJson(jsonString: string): DataBean {const jsonData:ESObject JSON.parse(jsonString);const dataBean new DataBean();dataBean.code jsonData.code;dataBean.msg jsonData.msg;return dataBean;}
}let json {code:0,msg:success};
let dataBean DataBean.fromJson(json);
console.log(test,dataBean.msg); // success
console.log(test,dataBean.isOK()); // true5、HarmonyOS 使用state装饰器监听Array数组对象中的属性如果不通过增删改的方式想监听属性有没有最佳实践
可以通过Observed装饰器和ObjectLink装饰器 嵌套类对象属性变化参考链接 https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-observed-and-objectlink-V5#%E5%AF%B9%E8%B1%A1%E6%95%B0%E7%BB%84
demo:
Observed
class InnerMessageVo {id?: number;readState?: boolean;constructor(id: number, readState: boolean) {this.id id;this.readState readState;}
}Component
struct ViweA {ObjectLink a: InnerMessageVo;build() {Row() {Text(${this.a.readState})}}
}Entry
Component
struct Index {State arr1: InnerMessageVo[] [new InnerMessageVo(1, false), new InnerMessageVo(2, false)]build() {Row() {Column() {List() {ForEach(this.arr1, (item: InnerMessageVo, index: number) {ViweA({ a: this.arr1[index] })})ListItem() {Button(change).onClick(() {console.log(false);this.arr1[1].readState true})}}}.width(100%)}.height(100%)}
}