javascript - SAPUI5中标准控件的重写方法

标签 javascript sapui5

有没有办法覆盖 SAPUI5 中标准控件的方法?我想重写CalendarRow.js的方法'_getAppointmentsSorted'

我尝试复制粘贴整个文件并更改方法,但随后出现以下错误:

failed to load 'be/amistaAdminPlanning/controls/MyCalendarRowRenderer.js' from ./controls/MyCalendarRowRenderer.js: 404 - Not Found

我尝试通过指定渲染器来修复此错误,如下所示:

    renderer: function(oRm, oControl) {
        sap.ui.unified.CalendarRowRenderer.render(oRm, oControl); 
    }

已找到 CalendarRowRenderer,但渲染方法未按预期执行,并弹出以下错误消息:

Cannot read property 'getId' of undefined in CalendarRowRenderer.js?eval:6

有人知道为什么它会这样吗?

扩展

sap.ui.unified.CalendarRow.extend("be.amistaAdminPlanning.controls.MyCalendarRow", {
    renderer: function(oRm, oControl) {
        sap.ui.unified.CalendarRowRenderer.render(oRm, oControl);
    }
});

function _getAppointmentsSorted() {

    var aAppointments = this.getAppointments();

    aAppointments.sort(function(oApp1, oApp2) {

        var iResult = oApp1.getStartDate() - oApp2.getStartDate();

        if (iResult == 0) {
            iResult = oApp2.getEndDate() - oApp1.getEndDate();
        }

        return iResult;

    });

    return aAppointments;

}

最佳答案

您应该创建自己的自定义控件(例如 CalendarRowExtended)并覆盖自定义控件中的函数,而不是“复制粘贴整个文件”。

这些链接可能有用:

Extending TextField Rendering

Extending Buttons with Additional Events

编辑:抱歉,没有看到 Christoph 的评论因为它是在我之前几分钟写的。但我想想法是一样的。

关于javascript - SAPUI5中标准控件的重写方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47451406/

相关文章:

javascript - 我可以使用什么方法在所有浏览器中获取时区缩写?

javascript - 将数据动态添加到 javascript map

javascript - 仅阻止水平滚动移动应用程序

javascript - 如何覆盖listItem图标工具提示?

javascript - 如何在 typescript 中键入一个动态加载其自己的成员的类

javascript - Uncaught Error : Objects are not valid as a React child (found: [object HTMLImageElement])

sapui5 - 从 NavContainer 调用 "to"后获取下一页传递的数据

javascript - SAPUI5 - 数据绑定(bind)到现有 XML 表

javascript - 扩展 SAPUI5 中的控件

testing - OPA测试时如何绑定(bind)模型?