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

如何在SAPUI5格式化器中使用外部数组或全局变量?

在SAPUI5格式化器中访问外部数组/传递参数的解决方案

问题场景

在UI5 Table中,多数列用常规格式化器处理,但某一列需要基于外部对比数组做复杂转换。该对比数组已从数据库获取并声明为控制器的全局变量,但遇到以下问题:

  • 格式化器函数内的this指向内部函数而非控制器实例,直接引用this.array返回undefined
  • 尝试通过bindProperty的parts参数传递数组时触发绑定错误,因为parts的path仅支持字符串类型的绑定路径

尝试过的错误代码

var that = this;
bindProperty(
  "text", {
    parts: [{ path: 'AA' }, 
            { path: 'A'}, 
            { path: that._C}],
    { path: that.array},
    formatter: that.columnFormatter
)

可行解决方案

方案1:将数组存入命名模型,通过绑定路径访问

把对比数组存入控制器的命名模型中,通过绑定路径传递给格式化器,这是UI5推荐的方式:

  1. 在控制器初始化时创建命名模型并赋值数组:
onInit: function() {
  // 假设this.array是已获取的对比数组
  var oCompareModel = new sap.ui.model.json.JSONModel({
    compareArray: this.array
  });
  this.getView().setModel(oCompareModel, "compareModel"); // 设置命名模型
}
  1. 在绑定列时,通过parts引用命名模型的路径:
var that = this;
this.byId("yourColumn").bindProperty("text", {
  parts: [
    { path: 'AA' }, // 表格行数据的属性
    { path: 'A' },
    { path: '/compareArray', model: 'compareModel' } // 引用命名模型中的数组
  ],
  formatter: that.columnFormatter
});
  1. 格式化器中直接接收数组参数:
columnFormatter: function(aaValue, aValue, compareArray) {
  // 在这里使用compareArray做复杂转换逻辑
  return "处理后的值";
}

方案2:绑定格式化器的上下文(this指向控制器)

通过bind()方法将格式化器的this绑定到控制器实例,这样就能直接访问控制器的全局变量:

var that = this;
this.byId("yourColumn").bindProperty("text", {
  parts: [{ path: 'AA' }, { path: 'A' }],
  formatter: that.columnFormatter.bind(that) // 绑定this到控制器实例
});

格式化器内直接访问控制器的全局数组:

columnFormatter: function(aaValue, aValue) {
  var compareArray = this.array; // 此时this指向控制器,可直接访问全局变量
  // 执行复杂转换逻辑
  return "处理后的值";
}

方案3:利用闭包捕获外部数组变量

如果对比数组是静态或初始化后不再变更的,可通过闭包让格式化器直接捕获数组:

var that = this;
// 定义带闭包的格式化器
var customFormatter = function(aaValue, aValue) {
  var compareArray = that.array; // 直接捕获外部的控制器数组变量
  // 执行复杂转换逻辑
  return "处理后的值";
};

// 绑定列时使用该格式化器
this.byId("yourColumn").bindProperty("text", {
  parts: [{ path: 'AA' }, { path: 'A' }],
  formatter: customFormatter
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 05:08:20