You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flexible Column Layout刷新后重复点击行绑定上下文路径为0的问题

问题原因分析

这个问题的核心在于OData模型绑定路径的临时索引机制以及页面刷新后的数据加载时序问题:

  • 页面刷新并恢复双列布局时,列表控件绑定的OData模型可能还未完全从服务端加载完数据,此时UI5会为列表项生成基于客户端索引的临时绑定路径(如/UnitSet(0)),而非包含实际实体键值的路径。
  • 你当前的代码通过拆分getPath()结果获取task参数,这种方式完全依赖绑定路径格式。当路径是临时索引格式时,自然会得到错误的0而非正确的709342。
  • 首次点击其他行时,触发了模型对对应实体的加载,绑定路径会更新为带实际键值的格式,因此能正常工作;但刷新后点击原行时,该行的绑定上下文仍处于临时索引状态,导致参数错误。
修复建议

不要通过绑定路径拆分获取键值,直接从绑定上下文获取实体的键字段值是更可靠的方式:

unitEmployees: function (oEvent) {
    // 直接从绑定上下文获取键字段(替换为你实际的键字段名,比如"UnitId")
    var task = oEvent.getSource().getBindingContext("odata").getProperty("UnitId"),
        oNextUIState;
    this.getOwnerComponent().getHelper().then(function (oHelper) {
        oNextUIState = oHelper.getNextUIState(1);
        this.oRouter.navTo("unitemployees", {
            layout: fioriLibrary.LayoutType.TwoColumnsMidExpanded,
            task: task
        });
    }.bind(this));
}

额外优化点:

  • 监听列表绑定的dataReceived事件,确保数据加载完成后再启用行的点击交互,避免用户在数据未就绪时操作。
  • 检查路由的pattern配置,确保task参数的定义和OData实体键的类型匹配,避免类型转换导致的异常。

内容的提问来源于stack exchange,提问作者Dommy Gichuhi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 23:25:14