繁体   English   中英

SAPUI5中标准控件的替代方法

[英]Overriding method of standard control in SAPUI5

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

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

无法从./controls/MyCalendarRowRenderer.js加载'be / amistaAdminPlanning / controls / MyCalendarRowRenderer.js':404-找不到

我试图通过指定渲染器来解决此错误,如下所示:

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

找到了CalendarRowRenderer,但是render方法未按应有的方式执行,并弹出以下错误消息:

无法读取 CalendarRowRenderer.js 中未定义的属性“ getId” ?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)并覆盖自定义控件中的函数。

这些链接可能有用:

扩展TextField渲染

使用其他事件扩展按钮

编辑:对不起,没有看到克里斯多夫的评论,因为它是在我之前几分钟写的。 但是我想这个想法是一样的。

我没有详细测试它,但我认为以下应该可行:

创建一个文件app_name_space /control/CalendarRowCustom.js文件夹'control'与'controller','view'文件夹处于同一级别。

用以下内容填充CalendarRowCustom.js:

sap.ui.define(
  ['sap/ui/unified/CalendarRow'],

  function(CalendarRow) {
    "use strict";
    return CalendarRow.extend("app_name_space.control.CalendarRowCustom",{
      _getAppointmentsSorted: function() {
        // Here goes your custom code
    },
    renderer: {}
  });
 }
);

根据文档中的此示例renderer: {}应该从父控件继承功能。

然后,您应该能够在这样的视图中使用自定义控件:

<mvc:View controllerName="..." xmlns:html="http://www.w3.org/1999/xhtml"
   xmlns:mvc="sap.ui.core.mvc" xmlns:cust="app_name_space.control">

    <cust:CalendarRowCustom />

</mvc:View>

在视图以及控件中用定义的名称空间替换“ app_name_space ”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM