UI5_Walkthrough_Step 23: Filtering 过滤器

一、基本概念

二、练习

新建文件夹23,复制练习ui5_Walkthrough_Step 22: Custom Formatters 自定义格式 文件夹下的内容

2.1 webapp/view/InvoiceList.view.xml

InvoiceList视图xml文件中List控件新增headerToolbar控件,目的是在发票列表的的工具栏加一个搜索框,SearchField 属性绑定搜索处理函数onFilterInvoices,在2.2视图绑定控制器中定义

XML 复制代码
<mvc:View
   controllerName="sap.ui5.walkthrough.controller.InvoiceList"
   xmlns="sap.m"
   xmlns:mvc="sap.ui.core.mvc">
   <List
      headerText="{i18n>invoiceListTitle}"
      class="sapUiResponsiveMargin"
      width="auto"
      items="{invoice>/Invoices}" >
       <headerToolbar>
         <Toolbar>
            <Title text="{i18n>invoiceListTitle}"/>    <!-- 左侧标题 -->
            <ToolbarSpacer/>  <!-- 弹性间距,将后面的控件推到右侧 -->
            <SearchField 
               width="50%" 
               search=".onFilterInvoices"/>  <!-- 搜索事件处理函数 -->
         </Toolbar>
      </headerToolbar>
      <items>
         <ObjectListItem
           title="{invoice>Quantity} x {invoice>ProductName}"
           number="{
                    parts: ['invoice>ExtendedPrice','view>/currency'],
                    type: 'Currency',
                    formatOptions: { showMeasure: false }
                }"
            numberUnit="{view>/currency}"
            numberState="{= ${invoice>ExtendedPrice} > 50 ? 'Error' : 'Success' }" >
            <firstStatus>
                  <ObjectStatus 
                  text="{ path: 'invoice>Status',formatter: '.formatter.statusText'}"
                  state="{ path: 'invoice>Status',formatter: '.formatter.statusState'}"
                  icon="{ path: 'invoice>Status',formatter: '.formatter.statusIcon'}"
                  />
            </firstStatus>
               </ObjectListItem>
            
      </items>
   </List>
</mvc:View>

2.2 webapp/controller/InvoiceList.controller.js

与Step_22相比

  • 新增依赖"sap/ui/model/Filter", "sap/ui/model/FilterOperator"
  • 新增函数onFilterInvoices实现搜索功能

query 存储ui界面搜索框输入值

ProductName 为过滤字段名称

FilterOperator.Contains为过滤类型,即ProductName 包含了输入框的值,发票数据就不会被过滤

oList = this.byId("invoiceList");中的id要和xml中列表List控件件的id一致

javascript 复制代码
sap.ui.define(
  [
    "sap/ui/core/mvc/Controller",
    "sap/ui/model/json/JSONModel",
    "../model/formatter",
    "sap/ui/model/Filter",
    "sap/ui/model/FilterOperator",
  ],
  function (Controller, JSONModel, formatter, Filter, FilterOperator) {
    "use strict";

    return Controller.extend("sap.ui5.walkthrough.controller.InvoiceList", {
      formatter: formatter,
      //初始化
      onInit: function () {
        var oViewModel = new JSONModel({
          currency: "EUR",
        });
        this.getView().setModel(oViewModel, "view");
      },
      //发票列表搜索
      onFilterInvoices(oEvent) {
        // build filter array
        const aFilter = [];
        const sQuery = oEvent.getParameter("query");
        if (sQuery) {
          aFilter.push(
            new Filter("ProductName", FilterOperator.Contains, sQuery)
          );
        }

        // filter binding
        const oList = this.byId("invoiceList");
        const oBinding = oList.getBinding("items");
        oBinding.filter(aFilter);
      },
    });
  }
);

2.3 运行结果

相关推荐
fatfishccc3 个月前
Spring MVC 全解析:从核心原理到 SSM 整合实战 (附完整源码)
java·spring·ajax·mvc·ssm·过滤器·拦截器interceptor
魏波.4 个月前
BasicAuthenticationFilter处理 HTTP 基本认证(Basic Authentication)的核心过滤器详解
过滤器
Java牛马4 个月前
SpringCloud之Gateway
网关·spring cloud·gateway·路由·过滤器·断言
abcnull6 个月前
springboot中过滤器配置使用
java·spring boot·后端·springmvc·过滤器
未来影子7 个月前
布隆过滤器和布谷鸟过滤器
过滤器·布隆过滤器·布谷鸟过滤器
阿绵8 个月前
拦截器和过滤器详解
java·spring·过滤器·拦截器
shangxianjiao8 个月前
Javaweb后端登录认证 登录校验 过滤器 filter令牌校验,执行流程,拦截路径
java·springboot·springcloud·过滤器
contact9710 个月前
.NET Core中的五种过滤器详解
.netcore·过滤器