我有两个XML视图,我可以使用路由在它们之间导航。在第一个视图中,我有一个工作日列表,在第二个视图中,我想显示与工作日相关的餐点(与ID相关联)。现在我只能用饭菜显示整个清单(未经过滤)。数据来自diet.json
。
答案 0 :(得分:0)
您可以使用路由参数(工作日或您提到的ID)来传递过滤器选项。 (看https://sapui5.hana.ondemand.com/#docs/guide/2366345a94f64ec1a80f9d9ce50a59ef.html) 而不是传递创建一个过滤器: (看着: https://sapui5.hana.ondemand.com/#docs/guide/5295470d7eee46c1898ee46c1b9ad763.html)
我建议您将工作日的名称作为路由参数传递,因为它对用户来说看起来更好。
这也为您提供了一个优势,您可以在浏览器中为您的选择添加书签。
答案 1 :(得分:0)
// <强> DETAIL.controller.js 强>
sap.ui.define([
"sap/ui/demo/nav/controller/BaseController"
], function (BaseController) {
"use strict";
return BaseController.extend("sap.ui.demo.nav.controller.DETAIL", {
onInit: function () {
var oRouter = this.getRouter();
oRouter.getRoute("meal").attachMatched(this._onRouteMatched, this);
},
_onRouteMatched : function (oEvent) {
var oArgs, oView;
oArgs = oEvent.getParameter("arguments");
oView = this.getView();
var context = new sap.ui.model.Context(oView.getModel(), "/" + oArgs.dayId);
oView.setBindingContext(context);
var oItemTemplate =new sap.m.StandardListItem({
title:"{items}"
});
var oList = oView.getContent()[0].getContent()[0];
var oBindingInfo = {
path:"/meals",
template: oItemTemplate,
filters:[
new sap.ui.model.Filter("dayId", sap.ui.model.FilterOperator.EQ, oArgs.dayId)
]
};
oList.bindAggregation("items",oBindingInfo);
}
});
});
<强> // DETAIL.view.xml 强>
<mvc:View
controllerName="sap.ui.demo.nav.controller.DETAIL"
xmlns="sap.m"
xmlns:mvc="sap.ui.core.mvc">
<Page id="mealPage" title="{i18n>Detail}"
showNavButton="true"
navButtonPress="onNavBack"
class="sapUiResponsiveContentPadding">
<content>
<List id="mealListID" headerText="Meals" noDataText="Not Found">
</List>
</content>
</Page>
</mvc:View>