Javascript SAPUI5中标准控件的重写方法

Javascript SAPUI5中标准控件的重写方法,javascript,sapui5,Javascript,Sapui5,是否有方法覆盖SAPUI5中标准控件的方法?我要重写的方法“\u GetAppointsOrted” 我尝试复制粘贴整个文件并更改方法,但随后出现以下错误: 加载失败 “be/amistaAdminPlanning/controls/MyCalendarRowRenderer.js”来自 ./controls/MyCalendarRowRenderer.js:404-未找到 我试图通过如下方式指定渲染器来修复此错误: renderer: function(oRm, oControl) {

是否有方法覆盖SAPUI5中标准控件的方法?我要重写的方法“\u GetAppointsOrted”

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

加载失败 “be/amistaAdminPlanning/controls/MyCalendarRowRenderer.js”来自 ./controls/MyCalendarRowRenderer.js:404-未找到

我试图通过如下方式指定渲染器来修复此错误:

    renderer: function(oRm, oControl) {
        sap.ui.unified.CalendarRowRenderer.render(oRm, oControl); 
    }
<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>
已找到CalendarRowRenderer,但render方法的执行方式不正确,并弹出以下错误消息:

无法读取CalendarRowRenderer.js中未定义的属性“getId”?eval:6

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

扩大
您应该创建自己的自定义控件(例如CalendarRowExtended)并重写自定义控件中的函数,而不是复制粘贴整个文件

这些链接可能有用:


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

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

创建文件app\u name\u space/control/CalendarRowCustom.js 文件夹“控件”与“控制器”、“视图”文件夹处于同一级别

用以下内容填充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: function(oRm, oControl) {
        sap.ui.unified.CalendarRowRenderer.render(oRm, oControl); 
    }
<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。

您应该实现一个扩展CalendarRow的自定义控件。在自定义控件中,可以重写方法:自定义组件是一种方法。不要试图覆盖现有组件的行为。感谢您的输入,Sachad!但是该方法没有被调用。为什么不呢?在这种情况下这不起作用,因为我认为函数_getAppointsOrted不是JavaScript对象原型的一部分。您应该使用sachads方法,创建自己的自定义控件,并在元数据中使用renderer:{}。