使用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)
答案 0 :(得分:1)
即使对于不扩展sap.ui.define
的对象,您也可以使用sap.ui.base.Object
。因此,如果您不需要UI5对象提供的功能,则不必强制扩展它们。但是,在您的情况下,您似乎希望使用事件支持,在这种情况下,至少扩展sap.ui.base.EventProvider
会很有用。
由于您希望从控制器中分离后端调用,因此您看起来使用的是JSONModel,并且具有比读取更复杂的用例。在这种情况下,您还可以扩展JSONModel,并支持创建,更新和删除操作。