我正在尝试使用selectize.js在我的应用程序中填充表单上的组合框。
我试图关注"Rotten Tomatoes" model on the selectize web page.但我对此次通话的时机感到有些困惑。作者更喜欢用一点< script>来初始化select。紧跟在< select>的规范之后在html文件中,但我宁愿将所有脚本保存在单独的js文件中。
无论如何,我做了以下
function loadSelect()
{
var myAPI = "my/api/";
var count = 0;
console.log('in loadSelect()');
$('#myselect').empty();
$('#myselect').selectize({
valueField: 'id',
labelField: 'name',
searchField: 'name',
options: [],
create: true,
load: function(query, callback) {
console.log("loading data");
if (!query.length) {
console.log("no data loaded");
return callback();
}
$.ajax({
url: myAPI,
type: 'GET',
dataType: 'json',
data: {
q: query,
},
error: function() {
console.log("failure");
callback();
},
success: function(res) {
console.log("success");
count = res.data.length;
callback(res.data);
}
});
}
});
}
无论何时调用此loadSelect()函数,无论是来自$(document).ready(function(){
还是直接来自html页面,在声明select作为选择作者之后,我发现load()方法永远不会被召唤。请注意console.log语句。第一个,'in loadSelect()'
总是触发,但load()函数中的任何日志都不会触发。
Project documentation描述了加载回调,如下所示:
应从服务器加载新选项时调用。
但是,当 应从服务器加载新选项时,这会引发问题。
无论如何,我该怎样做才能确保加载回调会触发?
答案 0 :(得分:0)
将选项preload:true添加到传递给选择调用的选项数组中。