select2:自定义匹配器 - 搜索数据数组

时间:2018-04-25 16:29:34

标签: javascript jquery-select2

我正在与 select2 挣扎。

给出这个例子json数据:

{"id":1,"text":"search term category","data":[{"Key":"catalog","Value":"search term catalog"},{"Key":"make","Value":"search term make"},{"Key":"model","Value":"search term model"}]}

我如何不仅搜索"文字" 字段,还搜索中的所有"值" 字段数据数组

我读到了自定义匹配器,但无法使其工作,也无法找到我可以使用的示例。

希望你能帮助我或提供样品。

谢谢。

编辑:小提琴:jsfiddle

1 个答案:

答案 0 :(得分:0)

您需要编写自定义匹配器,select2 docs中提供了示例。我已经修改了他们提供的示例,使其成为可能对您有用的内容。

function matchCustom(params, data) {
    // If there are no search terms, return all of the data
    if ($.trim(params.term) === '') {
      return data;
    }

    // `params.term` should be the term that is used for searching
    // `data.text` is the text that is displayed for the data object
    if (data.text.indexOf(params.term) > -1) {
      return data;
    }

    // checking if a value matches (my addition to their example)
    if (data.data.some(({Value}) => Value.includes(params.text)) {
      return data;
    }

    // Return `null` if the term should not be displayed
    return null;
}

$(".js-example-matcher").select2({
  matcher: matchCustom
});

您可能需要修改我的添加内容以匹配您的浏览器兼容性要求(即我使用胖箭头功能,对象解构,String.prototype.includesArray.prototype.some)。