SAPUI5:如何在两个视图之间过滤我的列表?

时间:2015-12-31 15:24:03

标签: javascript data-binding url-routing sap sapui5

我有两个XML视图,我可以使用路由在它们之间导航。在第一个视图中,我有一个工作日列表,在第二个视图中,我想显示与工作日相关的餐点(与ID相关联)。现在我只能用饭菜显示整个清单(未经过滤)。数据来自diet.json

Here is my code

2 个答案:

答案 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>