日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

ODataListBinding.filter 方法里 FilterType.Application 和 FilterType.Control 的區(qū)別

 汪子熙 2022-06-22 發(fā)布于四川

在我的這篇教程 SAP UI5 應用開發(fā)教程之六十四 - 基于 OData V4 的 SAP UI5 表格控件如何實現(xiàn) filter(過濾) 和 sort(排序)功能 里,有朋友提出了一個疑問:

代碼第 37 行里這個 FilterType.Application 的作用是什么?

這個 FilterType.Application 是枚舉類型 FilterType 的一個字段,作為 filter 的輸入?yún)?shù)之一。filter 方法定義在 ODataListBinding.prototype.filter 上。

從 ODataListBinding.js 文件里能找到這個方法的實現(xiàn)源代碼。

里面的大段注釋里,就提到了這個 FilterType 的含義:

也可以從官方文檔里查看這個 FilterType 的定義:

每個列表綁定維護兩個單獨的過濾器列表,一個用于由擁有該綁定的控件內部定義的過濾器(維護在 ODataListBinding 實例的 aFilters 數(shù)組屬性里),另一個用于應用程序可以另外定義的過濾器列表(維護在 ODataListBinding 屬性的 aApplicationFilters 數(shù)組屬性里)。 當執(zhí)行過濾操作時,兩組過濾器會被合并。

可以把 FilterType.Control 理解成由控件本身設置、維護并實現(xiàn)的過濾器,這些過濾邏輯對于外界消費的應用程序來說是一個黑盒子。某些控件將過濾器功能作為其行為的一部分,例如 Table Columns或 Facet filters 過濾器。 當此類控件為某綁定路徑定義過濾器時,它們應使用 FilterType.Control 將其過濾器與應用程序可能另外定義的過濾器分開。

查看 ODataListBinding 的實現(xiàn)源代碼,如果過濾器類型為 FilterType.Control,就把 filter 方法傳入的過濾器明細放置到 1768 行的 this.aFilters 數(shù)組屬性里;

否則類型就是 FilterType.Application, 此時過濾器定義放置到 this.aApplicationFilters 里。

我們在 search 字段輸入 Hu,對 People 模型的 LastName 字段進行過濾:

最后這兩種類型的 filter,會在 ODataListBinding.prototype.filter 方法的調用棧內部,通過 combineFilters 做一個合并操作:

    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多