尝试使用不同的参数调用 selectize,但它以旧值运行
trying to call selectize with different parameter, but it runs with old value
我有一个接收参数然后调用 [selectize.js][1] 的函数。
最初我调用 myFunc
时 param
等于 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*/
// ...
}
不知道为什么没有全局变量就不行
我有一个接收参数然后调用 [selectize.js][1] 的函数。
最初我调用 myFunc
时 param
等于 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*/
// ...
}
不知道为什么没有全局变量就不行