【问题标题】:SAPUI5: How can I filter my list between two views?SAPUI5:如何在两个视图之间过滤我的列表?
【发布时间】:2016-04-05 12:58:20
【问题描述】:

我有两个 XML 视图,我可以使用路由在它们之间导航。在第一个视图中,我有一个工作日列表,在第二个视图中,我想显示与工作日相关的膳食(与 ID 链接)。现在我只能显示包含膳食的整个列表(未过滤)。数据来自diet.json

Here is my code

【问题讨论】:

    标签: javascript data-binding sapui5 url-routing


    【解决方案1】:

    您可以使用路由参数(工作日或您提到的那个 id)来传递过滤器选项。 (看https://sapui5.hana.ondemand.com/#docs/guide/2366345a94f64ec1a80f9d9ce50a59ef.html) 然后通过创建一个过滤器: (看着: https://sapui5.hana.ondemand.com/#docs/guide/5295470d7eee46c1898ee46c1b9ad763.html)

    我建议您将工作日的名称作为路由参数传递,因为它对用户来说看起来更好。

    这也为您提供了一个优势,您可以在浏览器中为您的选择添加书签。

    【讨论】:

      【解决方案2】:

      //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>
      

      【讨论】:

        猜你喜欢
        • 2022-12-14
        • 1970-01-01
        • 1970-01-01
        • 2015-10-01
        • 2021-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多