The sap.ui.base.ManagedObject offers many functionality out of the box
- state management
- data binding
- managed properties
- managed events
- …
Template
sap.ui.define([
"sap/ui/base/ManagedObject",
"sap/ui/model/resource/ResourceModel",
"sap/m/MessageBox"
], function(UI5ManagedObject, ResourceModel, MessageBox) {
"use strict";
return UI5ManagedObject.extend("<PROJECT_PATH>.control.<NAME>", {
metadata: {
properties: {
propertyA: {
type: "string"
}
},
events: {
eventA: {
parameters: {
eventParameterA: {
type: 'string'
}
}
}
}
},
/**
* @class <NAME>
* @summary <SUMMARY>
* @extends sap.ui.base.ManagedObject
*/
constructor: function(sPropertyA) {
UI5ManagedObject.apply(this);
this.setPropertyA(sPropertyA);
//Just an example to show that you can define a specific resourcemodel for the ManagedObject
// this._oi18nModel = new ResourceModel({
// bundleName: "<PATH>.i18n.i18n",
// supportedLocales: ["en"]
// });
// this.setModel(this._oi18nModel, "i18n");
},
/**
* @memberOf <NAME>
* @description example of how to fire a event with parameters
*/
showMessageBox: function() {
MessageBox.confirm("Lorem Ipsum", { //this._oi18nModel.getText("xyz")
onClose: function(sAction) {
this.fireEventA({
eventParameterA: sAction
});
}.bind(this)
});
}
});
});
Example
var oManagedObject = new ManagedObject("Lorem");
oManagedObject.getPropertyA();
//Expected output: 'Lorem'
oManagedObject.showMessageBox();
oManagedObject.attachEventOnce("eventA", function(oEvt) {
oEvt.getParameter("eventParameterA");
//Expected output: 'OK' or 'CANCEL'
}.bind(this));
// oManagedObject.attachEventA(function(oEvt) {
// oEvt.getParameter("eventParameterA");
// //Expected output: 'OK' or 'CANCEL'
// });
