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