Pourquoi le texte de l'option est-il converti en une chaîne de caractères d'une fonction après que les valeurs ont été mises à jour à partir de ko.mapping.fromJS ?
Un échantillon : http://jsfiddle.net/tYnc6/24/
Html :
<div>
<select data-bind="options: items, value: selected, optionsText: function(item) { return ('[' + item.Id + '] ' + item.Name) }, optionsCaption: 'Choose...'"></select>
<button data-bind="click: update">Update</button>
</div>
Javascript :
var mapping = {
key: function(data) {
return ko.utils.unwrapObservable(data.Id);
}
};
viewModel = {
items: ko.observableArray([
{Name: 'foo', Id: '1'},
{Name: 'bar', Id: '2'}
]),
selected: ko.observable(),
update: function() {
data = [
{Name: 'foo', Id: '1'},
{Name: 'bar', Id: '2'},
{Name: 'baz', Id: '3'}
];
ko.mapping.fromJS(data, mapping, this.items);
}
}
ko.applyBindings(viewModel);
Remarquez qu'après avoir appuyé sur la touche de mise à jour, le texte de l'option devient une fonction.