sapui5 - 在 SAPUI5 中使用参数路由时遇到问题
问题描述
我试图在下一页(视图)上单击时在列表中显示特定项目的数据 这Overview.view.xml
是默认视图,其中可单击列表连接到 oData 模型。接下来是概览导航到下一页的控制器,即Overview.controller.js
。下一页是Detail.view.xml
我想在此页面中显示单击项目的详细信息。
#Overview.view.xml
<mvc:View controllerName="root.demo.controller.Overview" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:mvc="sap.ui.core.mvc"
displayBlock="true" xmlns="sap.m">
<App >
<pages>
<Page title="{i18n>title}">
<content>
<List headerText="list" class="sapUiResponsiveMargin" width="auto" items="{HANA>/person}">
<items>
<ObjectListItem title="{HANA>ID} x {HANA>FIRSTNAME}" type="Navigation" press="onPress"/>
</items>
</List>
</content>
</Page>
</pages>
</App>
</mvc:View>
#Overview.controller.js
sap.ui.define([
"sap/ui/core/mvc/Controller"
], function (Controller) {
"use strict";
return Controller.extend("root.demo.controller.App", {
onPress: function (oEvent) {
var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
oRouter.navTo("detail");
}
});
});
#Detail.view.xml
<mvc:View xmlns="sap.m"
xmlns:mvc="sap.ui.core.mvc">
<Page title="{i18n>detailPageTitle}">
<ObjectStatus title="PAGE 1"
/>
</Page>
</mvc:View>
解决方案
如果您有不同的关联实体集,您需要将关联的键发送到第二个视图,并在那里创建与关联实体集的绑定
如果不是,您需要将对象发送到第二个视图
无论哪种方式,您都需要使用参数导航
在清单文件中,您需要指定路由
"routes": [
{
"name": "TargetMaster",
"pattern": "RouteMaster",
"target": [
"TargetMaster"
]
},
{
"pattern": "Detail/{storePath}",
"name": "Detail",
"target": "Detail"
}
],
"targets": {
"TargetMaster": {
"viewType": "XML",
"transition": "slide",
"clearControlAggregation": false,
"viewName": "Master"
},
"Detail": {
"viewType": "XML",
"viewName": "Detail"
}
}
在概览控制器中,您需要创建导航类似于
onListItemPress: function(oEvent){
var oItem = oEvent.getSource();
var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
oRouter.navTo("Detail",{
storePath: oItem.getBindingContext().getProperty("Store")
});
}
您可以在此处找到有关官方文档的更多信息
推荐阅读
- python - pygame - 玩家创建子弹会导致明显的 FPS 下降
- ruby-on-rails - 防止 nil:NilClass 的未定义方法“名称”用于呈现 nil 用户对象
- python-3.x - Pandas:对于具有多列整数和字符串的数据框,有没有办法指定 max() 函数查看哪一列?
- node.js - Sharp 图像压缩器输出数据 toBuffer() 不起作用。(在 Nodejs 中间件中)
- project - 创建网站监听机器人并发布更新
- ruby-on-rails - Ruby << 语法方法会引发错误,但 .push 方法在使用 yield 时不会。为什么?
- machine-learning - Ml.Net 图像分类增量学习
- google-apps-script - 在幻灯片上排列图像
- c - 如何在 C 中的一行中输入以空格分隔的输入?
- python - Discord.py 数据库 NameError 'conn' 未使用 asyncpg 定义