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 运行结果

相关推荐
Roye_ack1 天前
【微服务 Day3】SpringCloud实战开发(网关路由 + 网关登录校验 + 自定义过滤器 + 配置共享 + 配置热更新 + 动态路由)
网关·spring cloud·微服务·架构·过滤器·拦截器·配置管理
七夜zippoe6 天前
Spring MVC请求处理流程源码分析与DispatcherServlet核心逻辑
java·spring·mvc·过滤器·拦截器
fatfishccc4 个月前
Spring MVC 全解析:从核心原理到 SSM 整合实战 (附完整源码)
java·spring·ajax·mvc·ssm·过滤器·拦截器interceptor
魏波.5 个月前
BasicAuthenticationFilter处理 HTTP 基本认证(Basic Authentication)的核心过滤器详解
过滤器
Java牛马5 个月前
SpringCloud之Gateway
网关·spring cloud·gateway·路由·过滤器·断言
abcnull7 个月前
springboot中过滤器配置使用
java·spring boot·后端·springmvc·过滤器
未来影子7 个月前
布隆过滤器和布谷鸟过滤器
过滤器·布隆过滤器·布谷鸟过滤器
阿绵9 个月前
拦截器和过滤器详解
java·spring·过滤器·拦截器