我能够将选择列表的optionsValue绑定到索引 选项数组中的特定项目?
<select data-bind="options: options, optionsText: 'text',
optionsValue: ko.utils.arrayIndexOf(**somevalue**)" />
或者我不得不从
转换我的选项对象{
text: 'asdasd'
}
到
{
text: 'asdasd',
id: 0
}
并且正在做
<select data-bind="options: options, optionsText: 'text',
optionsValue: 'id' />
谢谢
答案 0 :(得分:1)
如果您是通过JSON进行通信而不是提交表单,那么您可以将所选值作为您的对象,并创建一个dependentObservable来表示它的索引,如:
function ViewModel() {
this.choices = ko.observableArray([
{ text: "index zero" },
{ text: "index one" },
{ text: "index two" }
]);
this.selectedChoice = ko.observable();
this.selectedChoiceIndex = ko.dependentObservable(function() {
return this.choices.indexOf(this.selectedChoice());
}, this);
};
示例:http://jsfiddle.net/rniemeyer/hevTF/
如果您要提交表单并依赖所选选项元素的value属性,那么您可能希望将索引添加到对象中(如您所建议的那样)。另一个选项是使用{{each(item,index)}}在jQuery模板中发出选项元素,如:http://jsfiddle.net/rniemeyer/h6wLr/