Я пытаюсь динамически изменить заголовок SAP Fiori, т. Е. После запуска панели запуска и после того, как я нажму на выбранное приложение, название приложения должно измениться в зависимости от того, что я хочу.Я использую эту страницу документа в качестве руководства https://ui5.sap.com/1.54.3/docs/api//symbols/sap.ushell.ui5service.ShellUIService.html.
Внутри моего webapp/Component.js
у меня есть метод setAppTitle()
, который должен установить новый пользовательский заголовок для приложения и вызывается из onAfterRendering()
метод webapp/view/S2Custom.controller.js
.
Причина, по которой я не могу вызвать setAppTitle()
напрямую из init()
метода webapp/Component.js
, заключается в том, что я получаю свои титры от webapp/i18n/i18n.properties
, который еще не "загружен" во время Component.js
's init()
.
Чтобы не использовать что-то вроде setTimeout(() => this.setAppTitle(sTitle), 6000)
внутри Component.js
, я решил вызвать его из onAfterRendering()
метода webapp/view/S2Custom.controller.js
.
webapp /view / S2Custom.controller.js
onAfterRendering: function (oEvent) {
var sComponentId = sap.ui.core.Component.getOwnerIdFor(this.getView());
var oComponent = sap.ui.component(sComponentId);
var i18nModel = new sap.ui.model.resource.ResourceModel({
bundleName: "ui.s2p.srm.sc.blahblah.BlahBlahExtension.i18n.i18n"
});
var oResource = i18nModel.getResourceBundle();
var sTitle = oComponent.getModel("appModel").getProperty("/sMode") === "OUTBOX" ? oResource.getText("APP_ONE") : oResource.getText("APP_TWO");
this.getOwnerComponent().setAppTitle(sTitle);
},
webapp / Component.js
setAppTitle: function (sText) {
var sTitle = sText;
console.log("TEST: ", this.getService("ShellUIService")); // ERROR !!!
try {
this.getService("ShellUIService").then(function (oService) {
oService.setTitle(sTitle);
}, function (oError) {
jQuery.sap.log.error("Cannot get ShellUIService");
});
} catch (err) {
console.log("TEST - ERROR: ", err);
}
},
Проблема в методе setAppTitle()
- консоль выдает ошибку:
this.getService не является функцией.
Итак, я вошел в свой manifest.json
"sap.ui5": {
"_version": "1.2.0",
"services": {
"ShellUIService": {
"factoryName": "sap.ushell.ui5service.ShellUIService"
}
},
"dependencies": {
"minUI5Version": "1.28.5",
"libs": {}
},
Я заметил, что в веб-среде IDE Свойство "services"не допускается ошибка в строке, которая содержит "services": {
.
Можете ли вы сказать мне, что вызывает эту проблему?Я уже пытался вызвать this.getService("ShellUIService")
один внутри Component.js
init()
метода, к сожалению, та же ошибка
this.getService не является функцией.