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

在SAPUI5中选择列表项时如何展示对象详情?

问题分析与修正方案

现有代码的问题

  • 绑定上下文获取错误:getBindingContext("/Products") 传入的路径有误,列表项已绑定到单个Product条目,当前控件的绑定上下文就是该条目,不需要指定根路径/Products。
  • 对象获取方式错误:getObject("ProductName") 只会返回ProductName属性值,无法拿到完整的产品对象,自然获取不到所有详情。

修正后的控制器代码

sap.ui.define(
  ["sap/ui/core/mvc/Controller", "sap/m/MessageBox"],
  /**
   * @param {typeof sap.ui.core.mvc.Controller} Controller
   * @param {typeof sap.m.MessageBox} MessageBox
   */
  function (Controller, MessageBox) {
    "use strict";

    return Controller.extend("com.ntditalia.prodotti.controller.Home", {
      onInit: function () {},

      onDetailPress: function (oEvent) {
        // 获取当前点击项的绑定上下文
        const oBindingContext = oEvent.getSource().getBindingContext();
        // 获取完整的产品对象
        const oProduct = oBindingContext.getObject();
        
        // 用消息框展示产品详情示例
        const sDetailContent = `产品ID:${oProduct.ProductID}\n产品名称:${oProduct.ProductName}\n单价:${oProduct.UnitPrice}\n库存数量:${oProduct.UnitsInStock}`;
        MessageBox.information(sDetailContent, {
          title: "产品详情"
        });
      },
    });
  }
);

额外说明

  • 如果需要跳转到独立的详情页面,可使用路由导航:this.getRouter().navTo("detail", { productId: oProduct.ProductID }),前提是已经在项目中配置好对应路由和详情视图。
  • 要确保项目已正确配置OData模型(通常在manifest.json中配置,或在Component.js/控制器onInit方法中初始化),这样才能正确获取绑定上下文的数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 21:33:17