Normalmente quando Ho una lista di selezione I legarsi con eliminazione diretta in questo modo:opzione selezionata Id e il valore
<select
data-bind="
options: data,
optionsText: 'Name',
optionsValue: 'Id',
optionsCaption: 'Select ...',
value: dataSelectedId" ></select>
Ma c'è un problema con una tale vincolante: non si ha l'oggetto selezionato. Hai invece il suo ID. Come unire questi due requisiti: avere un legame sia con l'ID dell'oggetto che con l'elemento stesso?
questo momento io uso computed
osservabile per ottenere voce selezionata, che di solito si presenta così:
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];
});
Ho cercato di avvolgere il valore getter utilizza una funzione personalizzata, ma si chiama per ogni elemento in caso di modifiche di selezione , quindi non ci sono vantaggi qui di usare questo approccio. Here è un jsfiddle.
Non riesco a farlo in questo modo, perché quindi non posso inserire questo SELECT in un modulo che viene inviato al server a meno che non crei un campo nascosto aggiuntivo per l'ID selezionato. Ma usare il campo nascosto con ID associato potrebbe farlo. – SOReader
Se si desidera che l'Id sia il valore di SELECT, quindi utilizzare osservabile calcolato per l'elemento selezionato è un ottimo approccio. – ManojRK