我正在与 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
答案 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.includes
和Array.prototype.some
)。