У меня есть веб-приложение с несколькими объектами Selectize, инициализированными на странице. Я пытаюсь загрузить каждый экземпляр значения по умолчанию на основе строки запроса при загрузке страницы, где ?<obj.name>=<KeywordID>
. Все параметры URL уже были сериализованы, это словарный вызов that.urlParams
.Выделить: установить значение по умолчанию в onInitialize с помощью setValue
Я знаю, что есть другие способы: initializing Selectize with a default value Я мог бы попробовать; но мне любопытно, почему вызов setValue
внутри onInitialize
не работает для меня, потому что я получаю сообщения об ошибках при запуске этого кода.
Я связываю весь этот JavaScript с помощью Browserify, но я не думаю, что это способствует этой проблеме.
С точкой зрения отладки, я попытался войти this
на консоль внутри onInititalize
и обнаружил, что setValue
находится на один уровень вверх в собственности Function.prototype, то options
свойства полно данные из load
, ключ для этих объектов внутри options
соответствует KeywordID. Но когда я записываю getValue(val)
на консоль, я получаю пустую строку. Есть ли способ сделать эту работу, или я игнорирую что-то о Selectize или JavaScript?
module.exports = function() {
var that = this;
...
this.selectize = $(this).container.selectize({
valueField: 'KeywordID', // an integer value
create: false,
labelField: 'Name',
searchField: 'Name',
preload: true,
allowEmptyOptions: true,
closeAfterSelect: true,
maxItems: 1,
render: {
option: function(item) {
return that.template(item);
},
},
onInitialize: function() {
var val = parseInt(that.urlParams[that.name], 10); // e.g. 5
this.setValue(val);
},
load: function(query, callback) {
$.ajax({
url: that.url,
type: 'GET',
error: callback,
success: callback
})
}
});
};
...
вы пытались использовать свойство 'options'? https://github.com/selectize/selectize.js/blob/master/docs/usage.md – vipin8169
Когда страница загружается, я знаю только значение 'valueField' через параметр url, поэтому мне нужна загрузка для извлечения данных из API, прежде чем я смогу сопоставить «valueField» с его опционным объектом, затем выберите его значение по умолчанию по умолчанию через 'setValue'. Я думаю, что проблема с вышеуказанным кодом заключается в том, что 'onInitialize' срабатывает перед' load', даже если 'preload: true'. Я мог бы попытаться получить данные, загруженные на страницу, когда они загружаются, и посмотреть, ведет ли 'onInitialize' так, как я хочу. – kas