选择2个自定义匹配器,但保留带状音调符号

Select2 custom matcher, but keep stripDiacritics

本文关键字:保留 符号 自定义 2个 选择      更新时间:2023-09-26

我知道在以前版本的select2中,stripDiacritics被导出,因此可以在默认匹配器之外访问。在当前版本中,4.0.1 似乎不可能编写自定义匹配器和使用 select2 的 stripDiacritics,因为没有导出$.fn.select2.defaults

为我编写自定义匹配器提取原始stripDiacritics的最佳方法是什么?

我正在尝试编写一个与选项的文本和数据属性匹配的匹配器。我试图避免修补 select2 的源代码,我想如果我遵循这条路,那将是一场噩梦。

更新

我已经突出显示了实际问题,并围绕我正在使用的代码发布了其他详细信息,如评论中所建议的那样:

我不是在要求有人为我编写新的匹配器(基于$.fn.select2.defaults.defaults.matcher),我只是要求提取私有原始stripDiacritics的最佳方法,以便我可以使用它。

我可以简单地将函数(以及它的依赖项:DIACRITICS对象)复制到我的代码中,但这是我试图避免的漏洞。

由于 stripDiacritics s 是一种私有方法,因此您对此无能为力(除了解析源代码)。

但是,如果您满意于仅从 select2 代码库中复制 stripDiacritics 方法并依靠 select2 提供DIACRITICS依赖项,则始终只需要 'select2/diacritics' 模块:

$.fn.select2.amd.require(['select2/diacritics'], function (DIACRITICS) {
  // stripDiacritics code copied from select2
  function stripDiacritics (text) {
    // Used 'uni range + named function' from http://jsperf.com/diacritics/18
    function match(a) {
      return DIACRITICS[a] || a;
    }
    return text.replace(/[^'u0000-'u007E]/g, match);
  }
  $(".awesome").select2({
    // declare your matcher code here with access to stripDiacritics
  })
});