尝试使用不同的参数调用 selectize,但它以旧值运行

trying to call selectize with different parameter, but it runs with old value

我有一个接收参数然后调用 [selectize.js][1] 的函数。

最初我调用 myFuncparam 等于 1。它有效,数据来自服务器,我得到一个下拉列表。

但后来我用另一个 param 值调用 myFunc,比方说 2。

而且我在控制台中看到,myFunc 收到 2,但是 load 函数和 ajax success 函数将 1 记录到控制台,并且数据好像param 值为 1。

如果我第一次用 param 等于 2 调用 myFunc,数据就好像 param 的值是 2。

我尝试添加到 load 和 ajax success 函数 cache: false。但是 load 函数继续使用旧的 param 值。

function myFunc(param) {
    console.log(param);
    $("#select-control").selectize({
        valueField: 'id',
        labelField: 'name',
        searchField: 'name',
        options: [],
        create: false,
        render: {
            option: function(item, escape) {
                return '<div>' + escape(item.name) + '</div>';
            }
        },
        score: function(search) {
            return function(item) {
                return 1;
            }
        },
        load: function (query, callback) {
            console.log("selectize loading data");
            console.log(param);
            this.clearOptions();
            $.ajax({
                url: "/api/some/end/point",
                type: 'GET',
                data: {
                    q: query,
                    some_param: param
                },
                error: function () {
                    callback();
                },
                success: function (res) {
                    console.log(res);
                    console.log(param);
                    callback(JSON.parse(res));
                },
            });
        }
    });
}

这是来自控制台的编辑日志

23378 // myFunc received this value as param
selectize loading data // load function is called
23378 // param value inside load function
{/* here is the response, which contains data */}
23378 // param value inside ajax success function
19476 // myFunc received new value
selectize loading data // load function is called
23378 // but the load function uses the first param value, it should be 19476 here
{/* the same old response, param didn't change*/}
23378 // and ajax success function also uses the old value, it also should be 19476

我刚刚为 param 添加了全局变量,然后我使用它。

var globalParam;

function myFunc(param) {
    globalParam = param;

    // ...
    /* use globalParam instead of param later*/
    // ...
}

不知道为什么没有全局变量就不行