我正在尝试重新使用 xml 视图中使用的格式化程序方法,但来自控制器。这是因为我需要将 ui.table 导出到 excel,并且类 sap.ui.export.Spreadsheet 获取的数据是在 JSON 模型中,而不是在 xml 视图中应用格式化程序后的样子。
sap.ui.define([
"../controller/BaseController",
"../model/models",
"../model/formatter"
],
function (BaseController, models, formatter) {
"use strict";
return BaseController.extend("ns.controller.Main", {
formatter: formatter,
_formattedUiTableData: function (sCode){
return formatter.getStatusText(sCode);
}
});
});
/////////////////at formatter.js /////////////////////////////////////////////
sap.ui.define(["../controller/BaseController"
], function () {
"use strict";
return {
serviceCoderDescription(sCode) {
const oResourceBundle = this.getOwnerComponent().getModel("i18n").getResourceBundle();
switch (sCode) {
case "A":
return oResourceBundle.getText("CodeA");
case "B":
return oResourceBundle.getText("CodeB");
default:
return sCode;
}
}
};
});
fotmatter 有自己的上下文,所以基本上格式化程序中的
this
不会指向控制器对象。
要实现此目的,您应该更改函数调用的上下文:
return formatter.getStatusText(sCode).bind(this)