【发布时间】:2020-09-08 23:15:27
【问题描述】:
我正在使用一个拆分应用程序,它有
- 主列表
- 3 个详细信息页面
MAster List 显示项目列表(例如,自行车和汽车列表)
这些是 3 个详细信息页面:
- 消息页面:在主列表上没有点击任何内容时的未找到/欢迎页面。
- BikeProperties 页面:如果单击 Bike,则会显示详细信息。
- CarProperties 页面:显示是否点击了 Car。
现在,问题是当我点击汽车产品时,会显示一个动画,从欢迎页面导航到汽车页面。
但是,如果我再次点击汽车产品,绑定会更新,没有动画。
同样,如果此时我选择了一辆自行车(在选择汽车之后),导航会出现动画。
总之,
- 如果在详细页面中再次显示同一页面,则不会显示动画。
- 加载不同的详细信息页面时会显示动画。
但是,我想要的是,无论当前显示哪个详细信息页面,导航都应该通过动画再次发生,以保持与动画的一致性。
另外,请注意,我不能使用基于哈希的路由,因为这个拆分应用需要显示在对话框中。
下面是虚拟代码:
App.view.xml
<mvc:View controllerName="com.sap.SplitApp.controller.App" xmlns:mvc="sap.ui.core.mvc" xmlns:core="sap.ui.core" displayBlock="true"
xmlns="sap.m">
<Shell id="shell">
<App>
<SplitApp id="app">
<masterPages>
<Page>
<List items='{/items}' selectionChange="handleNavigate" mode='SingleSelectMaster'>
<items>
<StandardListItem title='{name}' info='{type}'/>
</items>
</List>
</Page>
</masterPages>
<detailPages>
<MessagePage title='Hello!' text='Select a Product'></MessagePage>
<core:Fragment fragmentName="com.sap.SplitApp.fragments.BikeProperties" type="XML"/>
<core:Fragment fragmentName="com.sap.SplitApp.fragments.CarProperties" type="XML"/>
</detailPages>
</SplitApp>
</App>
</Shell>
App.controller.js
onInit: function () {
var items = [
{
name: 'Thunderbird 500cc',
type:'Bike'
},
{
name: 'Swift',
type:'Car'
},
{
name: 'Bullet 350cc',
type:'Bike'
},
{
name: 'Polo',
type:'Car'
}
];
var oModel = new sap.ui.model.json.JSONModel({ items: items});
this.getView().setModel(oModel);
},
handleNavigate: function(oEvent) {
var oBindingContext = oEvent.getParameter("listItem").getBindingContext();
var oSplitApp = this.byId("app");
var oDetailPage = null;
if (oBindingContext.getProperty("type") === "Bike") {
oDetailPage = this.byId('bikePage');
} else {
oDetailPage = this.byId('carPage');
}
oDetailPage.setBindingContext(oBindingContext)
oSplitApp.toDetail(oDetailPage);
}
BikeProperties.fragment.xml
<core:FragmentDefinition
xmlns="sap.m"
xmlns:mvc="sap.ui.core.mvc"
xmlns:l="sap.ui.layout"
xmlns:f="sap.ui.layout.form"
xmlns:core="sap.ui.core"
>
<Page id='bikePage' title='Bike'>
<Title text='{name}' />
</Page>
</core:FragmentDefinition>
CarProperties.fragment.xml
<core:FragmentDefinition xmlns="sap.m" xmlns:mvc="sap.ui.core.mvc" xmlns:l="sap.ui.layout" xmlns:f="sap.ui.layout.form"
xmlns:core="sap.ui.core">
<Page id='carPage' title='Car'>
<Title text='{name}'/>
</Page>
【问题讨论】:
标签: sapui5