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);