解决方案:router传的对象是一个代理对象,会丢失源对象原型。目前不支持类中传递方法。可以考虑如下方式,具体参考示例如下// 用于传递的对象信息,目前思路是将RouteParams对象通过router传递到第二个界面。第二个界面取出代理对象后,在new一个新实例对象并copy参数. export class RouteParams { constructor(key1?: string, key2?: string) { this.key1 = key1; this.key2 = key2; } // 这里是要传递的两个参数 public key1?: string; public key2?: string; // 这里将参数做拷贝 public copy(oldParams?: RouteParams) { this.key1 = oldParams?.key1; this.key2 = oldParams?.key2; } // 测试方法 public doTest() { console.log('doTest', `key1: ${this.key1}`); } }CustomButton({ mTitle: '跳转到第二个界面' }).onClick(() => { let routeParams = new RouteParams('value1', 'value2'); // 将对象通过router传递过去 router.pushNamedRoute({ name: 'SecondHarPage', params: routeParams }) })// 第二个界面获取数据 onPageShow(): void { // 这里第二个界面接收参数,注意 接收的实际是一个代理对象,会丢失方法 let params = router.getParams() as RouteParams | undefined; console.info('aboutToAppear: ' + JSON.stringify(params)); // 这里重新创建一个对象,然后拷贝数据 let newRouteParams = new RouteParams(); newRouteParams.copy(params); newRouteParams.doTest(); // 这里提示undefined }
解决方案:
router传的对象是一个代理对象,会丢失源对象原型。目前不支持类中传递方法。可以考虑如下方式,具体参考示例如下