This is a custom binding for using Selectize.js with your Knockout.js powered application.
Selectize is an HTML select alternative (like Select2, Chosen). Knockout is an MVVM framework for Javascript.
This custom binding wraps the built-in
options
binding of Knockout.js. So, additional parameters
like optionsValue
, optionsText
,
optionsCaption
, etc. can be used with this binding. See
official documentation
for further details. By default, the
selectize
binding uses id
for
optionsValue
and name
for
optionsText
.
By default, the text Choose...
is used as
optionsCaption
. You can use
optionsCaption: null
for no captions (first item is
selected by default).
The custom binding is available from https://gist.githubusercontent.com/xtranophilist/8001624/raw/ko_selectize.js
Example files are also available from https://gist.github.com/xtranophilist/8001624
Warning: This binding wraps the built-in
options
binding of Knockout.js and doesn't provide the
whole object to Selectize and therefore options like
searchField
do not work out of the box.
1. Using selectize with plain select tag, with values built in view.
<select data-bind="selectize: {}">
<option value="1">Val 1</option>
<option value="2">Val 2</option>
</select>
2. Using values from observable array.
The dropdown is created with all objects from
items
observable array. The value of id
or
attribute set in optionsValue
binding is set to
item_id
.
<select data-bind="selectize: items, value: item_id"></select>
3. Getting selected item as an object
The selectize
binding provides optional
object
parameter. While the observable provided with
value
parameter (like item_id
in our example)
holds the id
(or whatever property
optionsValue
defines), the observable provided with
object
parameter holds the whole item itself.
<select data-bind="selectize: items, value: my_item_id, object: my_item"></select>
4. Using with multiselect
<select data-bind="selectize: items, value: selected_items" multiple></select>
5. Passing additional options
See official Selectize.js usage documentation for all available options.
<select data-bind="selectize: items, value: selected_items2, options: {plugins: ['remove_button']}"
multiple></select>