7
通常,當我有一個選擇列表我淘汰賽結合這樣的:選擇的選項Id和值
<select
data-bind="
options: data,
optionsText: 'Name',
optionsValue: 'Id',
optionsCaption: 'Select ...',
value: dataSelectedId" ></select>
但是,有這樣的結合一個問題:你沒有選擇的對象。你有它的ID。 如何合併這兩個要求:綁定到項目的id和項目本身?
現在我用computed
觀察到獲得選擇的項目,通常是這樣的:
self.dataSelectedCO = ko.computed(function() {
for (var i = 0; i < self.data().length; ++i)
if (self.data()[i].Id() == self.dataSelectedId())
return self.data()[i];
});
我已經嘗試使用自定義函數來包裝值的getter但它要求每一個元素時,選擇更改,所以使用這種方法沒有任何好處。 Here是一個jsfiddle。
我不能這樣做,因爲那樣我就不能將這個SELECT放在發送到服務器的表單中,除非我爲所選ID添加額外的隱藏字段。但是使用帶有ID綁定的隱藏字段就可以了。 – SOReader 2013-05-07 14:08:19
如果您希望將Id作爲SELECT的值,那麼對所選項目使用計算可觀察值是非常好的方法。 – ManojRK 2013-05-08 06:32:47