2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
components(Component) pars independentis et reusable in applicatione SAPUI5 est.
SAPUI5 sequentia duo genera partium praebet;
faceless component (genus:sap.ui.core.Component
) : Nulla pars media interface non estuser interfaceElementa affinia, in missionibus adhibita quae UI coding elementum non requirunt;
III components (genus:sap.ui.core.UICcomponent
): UI elementa repraesentare UI elementa in applicatione instrumenti adhibentur, ut globuli, ac uncinis et metadata respondentibus.
Nota: "Corporeum Headless" non potest addi vase componenti
Component Container
medium;
sap.ui.core.UICcomponent extendit sap.ui.core.Component et addit velum reddens munus secundum sap.ui.core.Component.
Generaliter, in applicatione, pars integra debet duas partes continere: componentescontrollerdocument(component .js
) Descriptio lima et applicationis descriptio (manifest.json
)。
Maximus utilitas partium utendi est quod partes encapsulatae mollius immersa possuntdiversum组件容器(Component Container)
medium. Exempli gratia, Fiori Launchpad vas componente est; in applicatione probationis, componentem vas manually creare solemus.
Nota: Cum instantiating continente componente, spatium applicationis specificetur, et continens hac via utetur ad limam componentem moderatricem invenire.
Exemplum sequens est lima Component.js componentis moderatoris:
sap.ui.define([
"sap/ui/core/UIComponent",
"sap/ui/model/json/JSONModel"
], function (UIComponent, JSONModel) {
"use strict";
return UIComponent.extend("my.namespace.demo.Component", {
metadata : {
manifest: "json"
},
init : function () {
// call the init function of the parent
UIComponent.prototype.init.apply(this, arguments);
// set data model
var oData = {
recipient : {
name : "World"
}
};
var oModel = new JSONModel(oData);
this.setModel(oModel);
}
});
});
In hoc exemplo primum novam UI componentem definimus, deinde manifestam json in attributo metadatae constituimus, quod significat nos manifesta lima in forma JSON utemur ad configurationem componentis definiendam.
Deinde in functione init, primum munus parentis ordinis init vocavimus, deinde exemplar JSON constituimus et id ut exemplar componentis constituimus. Exemplar hoc objectum recipiens continet, quod nomen attributum cum valore Mundi habet.
Post limam componentem definientes, eam ad applicationes adiciamusindex.js
fasciculus, instantia componentem continens, creatum componentes onerant et in paginam onerant.
Hic est exemplum index.js fasciculi onerationis componentis:
sap.ui.define([
"sap/ui/core/ComponentContainer"
], function (ComponentContainer) {
"use strict";
new ComponentContainer({
name: "my.namespace.demo",
settings : {
id : "demo"
},
async: true
}).placeAt("content");
});
In hoc blog exercitatione omnia UI elementa encapsulabimus in componente independens index.html lima.
Hoc modo, quotienscumque subsidium accesserimus, id faciemus respectu componentium (non relativum ad index.html).
Haec mutatio architecturae applicationem faciliorem reddet quam prior static index.html pagina.
Primum, let'swebapp
InitialisComponent.js
File ad applicationem occasus condo nostram.Cum elementum instantiatur, SAPUI5 automatice appellabit scriptor einit
officium.Nostra pars hereditas basis classissap/ui/core/UICcomponent
In fessainit
Primus modus munus vocare debet basis classis.
Tabulae documenti operis structurae creatae sunt hoc modo:
Codex Component.js talis est:
sap.ui.define([
"sap/ui/core/UIComponent"
], function (UIComponent) {
"use strict";
return UIComponent.extend("zsapui5.test.Component", {
init() {
// call the init function of the parent
UIComponent.prototype.init.apply(this, arguments);
}
});
});
Deinde addamus applicationis configurationem ad fasciculi Component.js.
Codicis Component.js mutata est haec:
sap.ui.define([
"sap/ui/core/UIComponent",
"sap/ui/model/json/JSONModel",
"sap/ui/model/resource/ResourceModel"
], function (UIComponent,JSONModel,ResourceModel) {
"use strict";
return UIComponent.extend("zsapui5.test.Component", {
metadata: {
"interfaces": ["sap.ui.core.IAsyncContentCreation"],
"rootView": {
"viewName": "zsapui5.test.view.App",
"type": "XML",
"id": "app"
}
},
init() {
//call the init function of the parent
UIComponent.prototype.init.apply(this, arguments);
//set data model
const oData = {
recipient : {
name: "World"
}
};
const oModel = new JSONModel(oData);
this.setModel(oModel);
//set i18n model
const i18nModel = new ResourceModel({
bundleName: "zsapui5.test.i18n.i18n"
});
this.setModel(i18nModel, "i18n");
}
});
});
Fasciculus .js modificatio componentis duabus partibus constat;元数据部分
et dicitur quando pars initialized.init函数部分
。
Metadata sectione definit radix sententiaApp.view.xml
file reference ita ut componentia ostentationem applicationis intuitu pro directe inindex.js
Radix visum directe in tabella crea et ostende.Definitio metadata pars etiam instrumentorumsap.ui.core.IAsyncContentCreation
Interface quod sinit partes asynchronously omnino creari.
...
metadata: {
"interfaces": ["sap.ui.core.IAsyncContentCreation"],
"rootView": {
"viewName": "zsapui5.test.view.App",
"type": "XML",
"id": "app"
}
...
Quaeso note quod sap.ui.core.IAsyncContentCreationis interfacies implicanter ponit et radicem componentis View et eius itineris configurationem ad "async": verum;
In sectione functionis init, idem facimus quod priusApp.controller.js
Instanti data exemplar sicut in gubernatrix lima fecistisoModel
et i18n exemplari18nModel
。
...
init() {
//call the init function of the parent
UIComponent.prototype.init.apply(this, arguments);
//set data model
const oData = {
recipient : {
name: "World"
}
};
const oModel = new JSONModel(oData);
this.setModel(oModel);
//set i18n model
const i18nModel = new ResourceModel({
bundleName: "zsapui5.test.i18n.i18n"
});
this.setModel(i18nModel, "i18n");
}
...
Nota quod exemplar estLiga recta ad component non ex ipsa radice. Tamen, quia moderatores nidificati exemplar parentis sui sponte possidebunt, exemplum etiam in visu praesto est.
Cum ligationem notitiarum rerum et i18n obiectis in fasciculo Component.j iam implevimus, ante nos scribamus.App.controller.js
Logica remotio limarum moderatoris, i.e onInit 函数
et所需的模块引用
。
Effectus modificati codicis talis est:
sap.ui.define([
"sap/ui/core/mvc/Controller",
"sap/m/MessageToast"
], function (Controller, MessageToast) {
"use strict";
return Controller.extend("zsapui5.test.controller.App", {
onShowHello: function () {
// read msg from i18n model
const oBundle = this.getView().getModel("i18n").getResourceBundle();
const sRecipient = this.getView().getModel().getProperty("/recipient/name");
const sMsg = oBundle.getText("helloMsg", [sRecipient]);
// show message
MessageToast.show(sMsg);
}
});
});
In lima praecedente indice.j, directe instantias applicationis obiecti conspectusXMLView
. Nunc instantiate visum per continentem componente.
Ad hoc faciendum restituimus sententiam dependentiam antea additam cum novosap/ui/core/ComponentContainer
clientelas. Componente continente agit ut parens componentis applicationis ac suas proprietates et eventus navigationis tractat.
Cum instantiam efficiens continentis componentis, nominare debes applicationis spatium, hoc est;zsapui5.test
(Hoc indicat documenti webapp folder, quod est ubi pars .js fasciculi sitae sunt).
Effectus compositorum index.js fasciculi talis est:
sap.ui.define([
"sap/ui/core/ComponentContainer"
], function (ComponentContainer) {
"use strict";
new ComponentContainer({
name: "zsapui5.test",
settings : {
id : "test"
},
async: true
}).placeAt("content");
});
Cum de applicatione partium incisuras, sequentes conventiones sequi debemus;
Component .js
webapp
folderwebapp
in folderCurrite propositum adaptatum et effectus talis est:
Eadem applicatio fugit quam ante commensurationem.Sed faucibus nisictrl + shift + alt + s
Aperi fenestram diagnosticam ad speculandum propositum imperium, differentias sequentes invenire possumus.
ComponentContainer nuper additum est imperium parentis XMLView.
Hic articulus notionem et encapsulationis methodum componentium in SAPUI5 introducit, et ejus usum per exemplum demonstrat.