C'è un modo per mantenere l'associazione value
all'oggetto, ma avere la proprietà optionsValue
nell'oggetto. A partire da ora se si specificano entrambi, la proprietà optionsValue
che viene selezionata popolerà l'associazione value
. Id piace mantenere l'oggetto intatto nell'osservabile, ma specificare quale valore deve essere impostato nel valore della lista di selezione. In questo modo un modulo di invio invierà il optionsValue
che ho scelto.knockout.js con opzioniValore e valore
@Html.DropDownListFor(q => q.DivisionId, new SelectList(Enumerable.Empty<string>()), new { data_bind="options: divisions, optionsText: 'Name', optionsValue: 'Id', value: division, optionsCaption: ' - '" })
function AddCrossPoolGameDialog() {
var self = this;
self.divisions = ko.observableArray([]);
self.division = ko.observable();
self.awayDivisionTeams = ko.computed(function() {
var division = ko.utils.arrayFirst(self.divisions(), function(item) {
return self.division.Name() == item.Name;
});
if (division) {
return division.DivisionTeamPools;
}
return [];
});
}
Sembra piuttosto semplice scrivere un'associazione per questo tipo di comportamento. Non so di un modo costruito. Un altro modo è quello di utilizzare semplicemente due proprietà diverse per il valore e l'invio. Un'altra domanda, se la proprietà non sta davvero osservando cambiata perché è una proprietà osservabile? –
Alcuni altri menu a discesa dipendono da esso per mostrare/nascondere. –
Non riesco davvero a capire la tua struttura, ti dispiacerebbe creare un campione molto ridotto del tuo problema su jsfiddle e postare il codice qui? –