У меня есть приложение на основе UI5 (1.66+), которое работает корректно, но с левой и правой сторон экрана есть огромные пустые места (он же почтовый ящик включен):
Я хочу отключить почтовый ящик, чтобы использовать все пространство экрана.
До сих пор я пробовал следующие подходы:
- Чтобы использовать
"fullWidth": true
в sap.ui
разделе manifest.json - Чтобы добавить классы, связанные с рабочим столом, в HTML-тег в index.html :
<html class="sap-desktop sapUiMedia-Std-Desktop sapUiMedia-StdExt-LargeDesktop">
Чтобы добавить
appWidthLimited: false
в
index.html :
<script>
sap.ui.getCore().attachInit(function () {
new sap.m.Shell({
app: new sap.ui.core.ComponentContainer({
height: "100%",
name: "APPNAME"
}),
appWidthLimited: false
}).placeAt("content");
});
</script>
Как описано в « Как настроить контейнер Shell в SAPUI5 ».
Но ни один из них не работает для меня.
Обновление:
Мне удалось решить проблему с помощью статического XML-шаблона - просто добавьте <Shell id="shell" appWidthLimited="false">
к основному XML-шаблону, но теперь я хочу понять, как реализовать его через JS в new sap.m.Shell(…)
определении.
Отправная точка для экспериментов с кодом приведена ниже.
index.html :
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>widescreen</title>
<script id="sap-ui-bootstrap"
src="../../resources/sap-ui-core.js"
data-sap-ui-theme="sap_fiori_3"
data-sap-ui-resourceroots='{"letterboxing.widescreen": "./"}'
data-sap-ui-compatVersion="edge"
data-sap-ui-oninit="module:sap/ui/core/ComponentSupport"
data-sap-ui-async="true"
data-sap-ui-frameOptions="trusted">
</script>
</head>
<body class="sapUiBody">
<div data-sap-ui-component data-name="letterboxing.widescreen" data-id="container" data-settings='{"id" : "widescreen"}' id="content"></div>
</body>
</html>
Component.js :
sap.ui.define([
"sap/ui/core/UIComponent",
"sap/ui/Device",
"letterboxing/widescreen/model/models"
], function (UIComponent, Device, models) {
"use strict";
return UIComponent.extend("letterboxing.widescreen.Component", {
metadata: {
manifest: "json"
},
init: function () {
// call the base component's init function
UIComponent.prototype.init.apply(this, arguments);
// enable routing
this.getRouter().initialize();
// set the device model
this.setModel(models.createDeviceModel(), "device");
}
});
});