如何使用控制器中的fomatter绑定它?

问题描述 投票:0回答:1

我正在尝试重新使用 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;
            }
        }
    
    };
});

enter image description here

enter image description here

javascript sapui5 this formatter
1个回答
0
投票

fotmatter 有自己的上下文,所以基本上格式化程序中的

this
不会指向控制器对象。 要实现此目的,您应该更改函数调用的上下文:

return formatter.getStatusText(sCode).bind(this)

© www.soinside.com 2019 - 2024. All rights reserved.