有没有办法覆盖 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 Buttons with Additional Events
编辑:抱歉,没有看到 Christoph 的评论因为它是在我之前几分钟写的。但我想想法是一样的。
关于javascript - SAPUI5中标准控件的重写方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47451406/