Когда вы говорите «оболочка», я предполагаю, что вы имеете в виду SAP « ushell », также известный как оболочка Fiori Launchpad.Документация по API SAP в UI5 SDK не является исчерпывающей, но есть некоторые вещи, которые вы можете сделать, чтобы достичь того, что вы хотите в общедоступных методах SAPUI5.
Во-первых, вы хотите подождать, пока оболочка не отобразится.В SAP есть примерный код для возврата Обещания, которое будет достигать этого (обратите внимание, это код, предоставляемый при создании приложения-плагина из шаблона плагина Fiori через Web IDE):
_getRenderer: function() {
var that = this,
oDeferred = new jQuery.Deferred(),
oRenderer;
that._oShellContainer = jQuery.sap.getObject("sap.ushell.Container");
if (!that._oShellContainer) {
oDeferred.reject(
"Illegal state: shell container not available; this component must be executed in a unified shell runtime context.");
} else {
oRenderer = that._oShellContainer.getRenderer("fiori2");
if (oRenderer) {
oDeferred.resolve(oRenderer);
} else {
// renderer not initialized yet, listen to rendererCreated event
that._onRendererCreated = function(oEvent) {
oRenderer = oEvent.getParameter("renderer");
if (oRenderer) {
oDeferred.resolve(oRenderer);
} else {
oDeferred.reject("Illegal state: shell renderer not available after receiving 'rendererLoaded' event.");
}
};
that._oShellContainer.attachRendererCreatedEvent(that._onRendererCreated);
}
}
return oDeferred.promise();
}
Это обещание возвращается оболочка , которую вы можете использовать для добавления элемента в начало или конец заголовка панели инструментов.Вы должны обратить внимание на два метода: «addHeaderEndItem» и «addHeaderItem».В SDK есть инструкции, которые описывают, как его использовать, но я думаю, что самый простой способ понять реализацию - это посмотреть мой пример ниже:
var rendererPromise = this._getRenderer();
rendererPromise.then(function(oRenderer) {
oRenderer.addHeaderEndItem(
"sap.ushell.ui.shell.ShellHeadItem",
{
icon:"sap-icon://action",
press: that._buttonPress.bind(that)
},
true,
false,
[oRenderer.LaunchpadState.App, oRenderer.LaunchpadState.Home]
);
});
Вы можете прочитать API рендерера оболочки (выше) длябольше информации о каждой настройке, но пара слов предостережения.
Во-первых, убедитесь, что вы помещаете это в "onInit" компонента (init) или контроллера представления, чтобы избежать многократного добавления.Наиболее предпочтительным вариантом является добавление его в качестве плагина, если вы используете службу портала SAP Cloud Platform для управления вашей Fiori Launchpad.
Во-вторых, пока не используйте метод addFloatingButton.Это не готово.Я не буду вдаваться в подробности, но давайте просто скажем, что я потратил несколько часов на отладку прототипов SAP, и в них есть одна или две ошибки.
Наконец, примите во внимание, когда вам нужна эта кнопка.Массив в конце метода add содержит перечисления «App» и «Home».Из SAP:
Панель запуска сообщает, что можно передать в качестве параметра.Значения: App - состояние панели запуска при запуске приложения Fiori. Home - состояние панели запуска, когда домашняя страница открыта
Надеюсь, это имеет смысл, поскольку я не могу сформулировать это лучше, чем это:)
Удачи!