如何扩展UI5中的定制类(不是自定义控件)

时间:2016-11-16 12:03:53

标签: sapui5

使用UI5使用的AMD和模块范例,我想在不同的JS文件中使用单独的JS类来将我的ajax代码与相关的控制器分开。

基础类将关注常见错误处理等常见活动,而从此扩展的特定类仅处理特定于主题的ajax通信。这不是自定义控件,因此不需要渲染功能,元数据等。

我希望从sap.ui.define功能中受益,并希望我的新课程成为优秀的UI5公民。例如,我想在实例化类时激活我的init。

我应该从哪个sapui5类扩展?我目前正在使用sap / ui / base / Object,但想知道是否有更好的选择基于更好的性能或更适合目的。

我知道documentation on custom controls但是这似乎只关注渲染到屏幕的类的细节。

这是我目前做法的骨架:

sap.ui.define(['sap/ui/base/Object'],

    function(BaseObject) {
        "use strict";

        var AjaxBase = BaseObject.extend("myAjaxBase", {

            constructor: function(oControl) {
                BaseObject.apply(this);
                console.log("AjaxBase.constructor() fires")
            }
        })

        AjaxBase.prototype.init = function() {
            console.log("AjaxBase.init() fires")
        }
        return AjaxBase;

}, true)

1 个答案:

答案 0 :(得分:1)

即使对于不扩展sap.ui.define的对象,您也可以使用sap.ui.base.Object。因此,如果您不需要UI5对象提供的功能,则不必强制扩展它们。但是,在您的情况下,您似乎希望使用事件支持,在这种情况下,至少扩展sap.ui.base.EventProvider会很有用。

由于您希望从控制器中分离后端调用,因此您看起来使用的是JSONModel,并且具有比读取更复杂的用例。在这种情况下,您还可以扩展JSONModel,并支持创建,更新和删除操作。