Если вы общаетесь через JSON, а не отправляете форму, тогда вы можете иметь выбранное значение в качестве вашего объекта и создать зависимый объект, который будет представлять его индекс, например:
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/
Если вы отправляете форму и полагаетесь на атрибут значения выбранного элемента option, то вы захотите добавить индекс к своему объекту (как вы предлагали). Другой вариант - генерировать элементы option в шаблоне jQuery, используя {{each (item, index)}}, например: http://jsfiddle.net/rniemeyer/h6wLr/