我需要将该项添加到shell中。这是使用ShellHeadItem完成的,但我不希望它是一个图标,而是带有文本的按钮。
我可以在html中更改span子节点但是框架在几秒钟后或首次单击按钮后刷新shell。我试图消除这种"闪烁" (它是可见的)调用函数再次将它更改为文本,但它并不完美..
请您指点我应该如何扩展对象,我认为它是渲染对象?非常感谢你。
答案 0 :(得分:0)
所以我用了
var oShellHeader = sap.ui.getCore().byId("shell-header");
oShellHeader.addEventDelegate({
onAfterRendering: function () {
// ... change the html
}
})
答案 1 :(得分:0)
当您说“外壳”时,我假设您是指SAP“ ushell”,也称为Fiori Launchpad外壳。 UI5 SDK中的SAP API文档不是很全面,但是您可以做一些事情来实现SAPUI5公共方法中想要的功能。
首先,您要等到外壳已渲染。 SAP提供了一些提供的样板代码,用于返回将实现此目标的Promise(请注意-当您通过Web IDE从Fiori插件模板创建插件应用时,提供了该代码):
_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();
}
此承诺返回shell renderer,您可以使用该stackblitz example 将一个项目添加到工具栏的开头或结尾。您需要注意的两个方法是“ 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]
);
});
您可以阅读shell渲染器API(上),以获取有关每个设置的详细信息,但要多加注意。
首先,请确保将其放置在组件(init)或视图控制器的“ onInit”中,以避免多次添加。如果您正在使用SAP Cloud Platform Portal服务来管理Fiori Launchpad,则最可取的选择是将其添加为插件。
第二,请不要使用“ addFloatingButton”方法。还没准备好我不会详细介绍,而只是说我花了很多时间来调试SAP原型,并且它们中有一个或两个错误。
最后,请在需要此按钮时加以考虑。 add方法末尾的数组包含枚举“ App”和“ Home”。从SAP:
启动板状态可以作为参数传递。值:App-运行Fiori app时启动板状态Home-打开主页时启动板状态
希望这是有道理的,因为我不能说得更好:)
祝你好运!