2011-12-08 55 views
0

我可以將選擇列表的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' /> 

感謝

回答

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/

如果您提交表單,並依靠所選擇的選項元素的值屬性,那麼你會希望將索引添加到您的對象(如你所建議的)。另一種選擇是使用以發射在一個jQuery模板的選項元素{{每個(項目,索引)}}這樣:http://jsfiddle.net/rniemeyer/h6wLr/

+0

感謝。這不是我所期望的,但它確實會起作用。 –