I have a web application with multiple Selectize objects initialized on the page. I'm trying to have each instance load a default value based on the query string when the page loads, where ?<obj.name>=<KeywordID>
. All URL parameters have already been serialized are are a dictionary call that.urlParams
.
I know there are other ways to initializing Selectize with a default value I could try; but, I'm curious why calling setValue
inside onInitialize
isn't working for me because I'm getting any error messages when I run this code.
I'm bundling all this JavaScript with Browserify, but I don't think that's contributing to this problem.
In terms of debugging, I've tried logging this
to the console inside onInititalize
and found that setValue
is up one level in the Function.prototype property, the options
property is full of data from load
, the key for those objects inside options
corresponds to the KeywordID. But when I log getValue(val)
to the console, I get an empty string. Is there a way to make this work or am I ignoring something about Selectize or 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
property? github.com/selectize/selectize.js/blob/master/docs/usage.md – CheapenvalueField
via url parameter, so I need load to fetch the data from the API before I can map thevalueField
to its option object, then select it that option default value viasetValue
. I think the problem with the above code is thatonInitialize
fires beforeload
does, even ifpreload: true
. I might try having the data already bootstrapped into the page when it loads, and see ifonInitialize
behaves the way I want. – Tabernacle