OGX.JS配置动态路由后无法捕获参数__route_data为null如何解决
问题原因
- 你当前路由规则末尾加的
:OML标记是OGX.JS的路由模式标识,代表该路由命中后直接走OML模板渲染逻辑,不会触发自定义视图的路由参数注入流程,因此构造方法拿到的__route_data永远为null。 - OGX.JS只有绑定到自定义视图的普通无后缀路由,才会把正则表达式捕获组匹配到的内容,按顺序作为第二个参数传入视图的
construct方法。带模式后缀的路由生命周期由对应渲染器接管,参数不会透传给自定义视图类。
修复步骤
- 修改路由配置,删除末尾的
:OML后缀,绑定自定义视图的正确路由写法如下:
"mystage/invoices/([a-z0-9]{24})/([a-z0-9]{24})": "invoices"
- 检查视图注册逻辑,确认
invoices视图是通过OGX.Views.add标准方式注册的自定义视图,不存在同名的OML模板、UX组件产生优先级冲突。 - 如果修改路由后仍存在参数获取异常,可以直接通过全局路由对象读取匹配到的参数做兜底,代码示例:
this.construct = function(__data, __route_data){ const route_params = __route_data || OGX.Route.params; console.log('ROUTE', route_params); // 按捕获组顺序取值:第一个24位字符串为route_params[0],第二个为route_params[1] const biz_id = route_params[0]; const record_id = route_params[1]; };
补充说明:OGX.JS支持的路由模式后缀包括
:OML(渲染OML模板)、:Ux(渲染UX组件)、:Cmp(渲染通用组件),这类后缀路由的参数不会自动注入自定义视图构造方法,需要手动从OGX.Route.params读取。
内容的提问来源于stack exchange,提问作者steveso
相关产品推荐
相关产品推荐

