类似的问题:Select element's initial value
我在设置select元素的初始值时遇到问题。我基本上有一个从服务器进来的种子数据列表来填充下拉列表,我希望所选的值代表应从实体中选择的内容。
由于数据模型的选定值与种子数据中的对象引用不相等,因此未选择任何内容。
现在,我循环遍历每个实体,找到正确的选定值,设置等于种子数据的等价物,然后Knockout知道如何连接它。
这有更优雅的解决方案吗?我摆弄了一个简单的例子,里面有更多细节...... http://jsfiddle.net/hbrYM/14/
答案 0 :(得分:34)
正确猜测selectedValue引用不匹配,因此KO不会选择该项。使其工作的方法是不将复杂对象保存在所选值中,而是选择ID,因为基本类型相等可以成功并且选择了正确的值。
您需要在选项绑定上使用optionsValue选项(如果有意义的话):
<select data-bind="options: seedData,
optionsText: 'firstName',
optionsValue: 'ID',
value: data.selectedValue">
修改强>
如上所述,您可以使用计算(未经测试)重新选择正确的项目。
vm.currentlySelected = ko.computed(function () {
for (var i = 0; i < this.seedData().length; i += 1) {
var data = this.seedData()[i];
if (data.ID === this.selectedValue()) {
return data;
}
}
return null;
}, vm);
希望这有帮助。