Sto utilizzando knockout.js per creare un s elemento e anche per impostare il suo valore predefinito selezionato. Tutto funziona come previsto fino a Aggiungo il binding optionsValue
, a questo punto il menu a discesa non mostra più il valore iniziale corretto al caricamento della pagina.Come si usa knockout.js per costruire un <option> elemento <option> con sia testo che valori e anche impostare un valore inizialmente selezionato?
In altre parole, questo funziona:
<select data-bind="value: selectedAccount, options: accounts, optionsText: 'name'"></select>
... ma questo non funziona:
<select data-bind="value: selectedAccount, options: accounts, optionsText: 'name', optionsValue: 'id'"></select>
Ecco il mio semplificato, codice completo:
<!doctype html>
<html>
<head>
<title>Demo</title>
<script src='knockout-2.1.0.debug.js'></script>
</head>
<body>
<select data-bind="value: selectedAccount, options: accounts, optionsText: 'name', optionsValue: 'id'"></select>
<script>
function QuickTransferViewmodel()
{
var self = this;
self.accounts =
[
{ id: 0, name: "Spending" },
{ id: 1, name: "Savings" }
];
self.selectedAccount = ko.observable(self.accounts[1]);
}
ko.applyBindings(new QuickTransferViewmodel());
</script>
</body>
</html>
I si aspetterebbe che il menu a discesa mostri "Risparmi" come selezionato per impostazione predefinita. Lo fa solo se rimuovo il binding OptionValue.
Grazie in anticipo!
Non direttamente correlato alle tue domande, ma potresti ottenere dei risultati insoliti se l'associazione 'value' è prima di' options'. –