构造函数中调用napi_set_named_property修改ArkUI层属性能成功,其他地方无法设置成功

构造函数中调用napi_set_named_property修改ArkUI层属性能成功。

其他地方无法设置成功在C++侧调用set后,可以get获取到,但是到ArkUI层时值并未改变。

HarmonyOS
2024-05-30 22:09:50
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
e_lion

从ArkTS层传递的对象到C层,通过C层修改对象的值后,在Arkts中查询,需要查看到修改后的值,需要通过napi_get_named_property方法来修改,napi_set_named_property函数的意思是给对象设置属性,比如,返回一个对象给ArkTS层或者,调用ArkTS的函数,该函数的入参需要一个对象,则用该函数设置对象属性。

代码Demo实现:

1)ArkTS侧实现方法:

setvalue4(val: number):void { 
  this.arr2[1].setValue(val); 
} 
getvalue5(a:number):number { 
  this.setvalue4(a); 
  //return this.arr2[0].getValue(); 
  return this.testvalue11111; 
}

2)Native侧调用:

// 从arg[0]中获取ts侧传递的对象 
napi_value msi; 
napi_create_object(env, &msi); 
napi_coerce_to_object(env, args[0], &msi); 
// 获取l类中的方法 
napi_value getvalue5; 
napi_get_named_property(env, msi, "getvalue5", &getvalue5); 
napi_value arr[1]; 
value0 = 9999; 
napi_create_int32(env, value0, &arr[0]); 
napi_call_function(env, msi, getvalue5, 1, arr, &result);
分享
微博
QQ
微信
回复
2024-05-31 21:26:43
相关问题
定位是否必须联网才能成功
1799浏览 • 1回复 待解决
callback无法成功更新UI
1959浏览 • 1回复 待解决
HarmonyOS 接口调用成功
55浏览 • 1回复 待解决
安装Apache成功后,为什么无法运行?
2535浏览 • 1回复 待解决
NAPI跨线程调用TS线程函数
1253浏览 • 1回复 待解决
NAN无法配网成功,设备侧联网失败
8422浏览 • 2回复 待解决