我想为select2创建一个自定义dataAdapter,但我在网上看到的例子都使用了AMD。我们在项目中不使用AMD。如何创建自定义dataAdapter?实现current
和query
方法的普通对象是不够的。
答案 0 :(得分:1)
Select2有一个内置的AMD加载程序,用于加载插件和适配器,因此您需要使用它来构建自定义数据适配器。
您可以在Add decorator to data adapter in Select2 version 4.x
找到自定义数据适配器的示例您需要使用define
中Select2提供的方法,而不是直接调用jQuery.fn.select2.amd
。像
define('something/awesome', ['select2/data/array', function (ArrayAdapter) {
// Use the array adapter
}]);
会变成
jQuery.fn.select2.amd.define('something/awesome', ['select2/data/array', function (ArrayAdapter) {
// Use the array adapter
}]);
答案 1 :(得分:0)
事实证明,您几乎可以完全避免使用AMD。以下内容适用于select2版本4.0.10:
const ArrayAdapter = $.fn.select2.amd.require("select2/data/array");
class DataAdapter extends ArrayAdapter
{
constructor($element, options)
{
super($element, options);
}
query(params, callback)
{
console.log("params: " + JSON.stringify(params));
}
}
$("#my-combo-box").select2(
{
dataAdapter: DataAdapter
}
);
您可以访问$.fn.select2.amd.require._defined["select2/data/array"]
而不是调用amd.require()
,但是走到这一步可能没有意义:)