Knockout.js - optionsValue Bug
The "optionsValue" - Binding does not execute functions like optionsText
by kougiland
HTML
<script src="http://knockoutjs.com/downloads/knockout-1.2.1.debug.js"></script>
<select data-bind="options: options(), optionsText: 'name', optionsValue: 'value', selectedOptions: selectionAsStrings" multiple></select>
<span data-bind="text: ko.toJSON(selection)"></span>
JavaScript
var selectOptions = {
options : ko.observableArray([
{name: "Monday", value: 0},
{name: "Tuesday", value: 1},
{name: "Wednesday", value: 2},
{name: "Thursday", value: 3},
{name: "Friday", value: 4},
{name: "Saturday", value: 5},
{name: "Sunday", value: 6}
]),
selection: ko.observable([5, 6])
}
selectOptions.selectionAsStrings = ko.dependentObservable({
read: function() {
var result = ko.utils.arrayMap(this.selection(), function(option) {
return option + '';
});
return result;
},
write: function(newValue) {
this.selection(ko.utils.arrayMap(newValue, function(option) {
return parseInt(option, 10);
}));
},
owner: selectOptions
});
ko.applyBindings(selectOptions);