选择2自定义匹配器,但保留stripDiacritics

时间:2016-02-22 15:25:36

标签: javascript jquery-select2

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

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

我试图编写一个匹配选项文本和数据属性的匹配器。我试图避免修补select2的源代码,我想如果我沿着这条路走下去将是一场噩梦。

更新

我已经突出显示了实际问题,并根据评论中的建议发布了与我合作的代码的其他详细信息:

我没有要求别人为我编写新的匹配器(基于$.fn.select2.defaults.defaults.matcher),我只是要求最好的方式来拉动原始stripDiacritics是私有的,因此我可以使用它。

我可以,只需将函数(及其依赖项:DIACRITICS对象)复制到我的代码中,但那是我试图避免的漏洞。

1 个答案:

答案 0 :(得分:5)

由于stripDiacritics是一个私有方法,所以你可以做的事情不多(除了解析源代码)。

但是,如果您对从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
  })
});