Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选择2:通过promise加载异步数据_Javascript_Angularjs_Jquery Select2_Promise - Fatal编程技术网

Javascript 选择2:通过promise加载异步数据

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

异步加载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
        }
    };