我试图在select元素上使用值绑定,如这个小提琴:
http://jsfiddle.net/MikeEast/nM6dd/2/所述
但是,我似乎无法设置选定的选项(值绑定).
我知道我可以使用optionsValue绑定,但是这个值将是一个字符串,而不是一个不优选的对象.如果这是唯一的办法,我该如何确保选择的选项被写回到视图模型?
谢谢!
解决方法
这是解决方案.您必须将属性optionsValue:’id’添加到数据绑定.
您还必须在您的viewmodel中放置一个函数来返回所选对象.
您还必须在您的viewmodel中放置一个函数来返回所选对象.
HTML
<select data-bind="options: items,optionsText: 'name',optionsValue: 'id',value: selectedItemId"></select> <span data-bind="text: selectedItem().name"></span>
JS
var viewmodel = function () { this.items = ko.observableArray([ { id: 1,name: "Apple" },{ id: 2,name: "Orange"},{ id: 3,name: "Banana"} ]); this.selectedItemId = ko.observable(3); this.selectedItem = function() { var self = this; return ko.utils.arrayFirst(this.items(),function(item) { return self.selectedItemId() == item.id; }); }.bind(this); }; var vm = new viewmodel(); ko.applyBindings(vm);
干杯!