在SAPUI5 / OpenUI5文档的“应用程序最佳实践 - 准备”部分中提到了多流模式。 (https://openui5.hana.ondemand.com/#docs/guide/f377376842914da7a6716192ecffc9d0.html - 它几乎在底部)
我需要实现这种模式,但完全不知道如何继续下去。
我目前正在执行“最佳实践”中所示的实现,因此我将组件和路由器以及xml视图用于我的应用程序。
我对任何帮助或指向正确方向感到高兴。提前致谢! (而且,是的,我已经广泛搜索过,唉,复杂的例子很少见,很难找到。但是。)
Byebye,Cleo
答案 0 :(得分:5)
所以经过几天摆弄并从@TobiasOetzel推进正确的方向后,我想出了这个解决方案。它基于tdg示例,并在组件和xml视图中使用路由器。
组件:
rootView : "my.ui5.multiflow.view.App",
[...]
routes : [
{
pattern : "",
name : "_index",
view : "Main",
targetAggregation: "pages",
targetControl : "idAppControl",
},
{
pattern : "foo",
name : "_foo",
view : "SplitContainer",
targetAggregation : "pages",
targetControl : "idAppControl",
subroutes : [
{
pattern : "foo",
name : "foo_sub1",
view : "Master",
targetAggregation : "masterPages",
targetControl : "idSplitContainerControl",
subroutes : [
{
pattern : "foo",
name : "foo_sub2",
view : "Detail",
targetAggregation : "detailPages",
},
{
pattern : "foo/foo/:all*:",
name : "foo_sub3",
view : "Detail2",
targetAggregation : "detailPages",
}]
}]
}]
App.view看起来像这样:
<mvc:View
xmlns:mvc="sap.ui.core.mvc"
displayBlock="true"
xmlns="sap.m">
<App id="idAppControl" />
</mvc:View>
SplitContainer.view看起来像这样:
我必须给它一个高度,否则内容将被隐藏。默认情况下,高度为100%但显然无助于渲染/显示它。 (与图标标签栏中的图块容器相同的行为。)但这是另一个我将在另一时间解决的问题。
<mvc:View
xmlns:mvc="sap.ui.core.mvc"
displayBlock="true"
xmlns="sap.m">
<SplitContainer
id="idSplitContainerControl"
height="500px"
/>
</mvc:View>
那么我该如何处理这些路由:最初调用应用程序时,App控件实例化(“idAppControl”)。视图“Main”被放置在App控件的“pages”聚合中。
导航到myApp.html#/ foo时会发生三件事:
可以通过使用this.getRouter()。navTo(“foo_sub3”)或myApp.html#/ foo / foo /或myApp.html#/ foo / foo /导航来加载路径“foo_sub3”的视图somethingElse
非常有帮助http://scn.sap.com/community/developer-center/front-end/blog/2014/02/17/nested-ui-routing-in-openui5虽然我最终没有使用他提议的更改中的任何内容 在openui5-sdk-1.22.10 \ test-resources \ sap \ ui \ core \ samples \ routing
中的SDK示例我欢迎任何改进和/或改进建议。
答案 1 :(得分:2)
我设法使用以下Flow与路由调整SAPUI5教程应用程序: F - F - MD D D - F
(F = FullScreen; M = SplitApp MasterPage; D = SplitApp DetailPage)
谢谢Cleo
答案 2 :(得分:1)
答案 3 :(得分:0)
好的@TobiasOetzel :-)
我修改了导航,使其向后滑动而不是向前滑动,从全屏幕返回到主 - 细节
fullscreen = new sap.m.Page({
title : "fullscreen",
content : new sap.m.Button({
text : "to master detail",
press : function () {
app.back() // modified line
}
})
});