Javascript 选择2:通过promise加载异步数据
异步加载select2选项的最佳位置是什么。我想要与Javascript 选择2:通过promise加载异步数据,javascript,angularjs,jquery-select2,promise,Javascript,Angularjs,Jquery Select2,Promise,异步加载select2选项的最佳位置是什么。我想要与ajax相同的功能,但它需要从promise对象异步加载值,而不是select2发送ajax请求。下面的代码可以工作,我在query中加载数据,但这意味着每次击键,调用select下拉列表,它都会查询数据。那么,正确的配置是什么 代码: 编辑 查看,它似乎只允许查询数据的ajax或local。如果local接受一个返回数据的函数,这将是理想的。我走对了吗?有没有简单的方法来修补它 谢谢 // exports window.Select2
ajax
相同的功能,但它需要从promise对象异步加载值,而不是select2发送ajax请求。下面的代码可以工作,我在query
中加载数据,但这意味着每次击键,调用select下拉列表,它都会查询数据。那么,正确的配置是什么
代码:
编辑
查看,它似乎只允许查询数据的ajax
或local
。如果local
接受一个返回数据的函数,这将是理想的。我走对了吗?有没有简单的方法来修补它
谢谢
// exports
window.Select2 = {
query: {
ajax: ajax,
local: local,
tags: tags
}, util: {
debounce: debounce,
markMatch: markMatch,
escapeMarkup: defaultEscapeMarkup,
stripDiacritics: stripDiacritics
}, "class": {
"abstract": AbstractSelect2,
"single": SingleSelect2,
"multi": MultiSelect2
}
};
编辑2:
“local”确实接受一个函数。但是它不能很好地处理远程数据,因为数据是以延迟(异步)的方式接收的,下拉列表中没有填充新数据。我必须再次关闭和打开下拉列表。这对用户来说不是直观的 据我所知,select2为每个按键笔划调用一个
ajax
调用,并打开选择框。我可以使用query
(带承诺)获得与原始问题相同的行为。我希望select2加载一次数据,然后在本地执行rest(搜索,并进一步调用,直到任何数据更改)。看来这不是一个选择。我可能只是在本地缓存结果。更好的回答欢迎。如何通过查询(承诺)获得答案?
// exports
window.Select2 = {
query: {
ajax: ajax,
local: local,
tags: tags
}, util: {
debounce: debounce,
markMatch: markMatch,
escapeMarkup: defaultEscapeMarkup,
stripDiacritics: stripDiacritics
}, "class": {
"abstract": AbstractSelect2,
"single": SingleSelect2,
"multi": MultiSelect2
}
};