Używam knockout.js do zbudowania elementów <select>
s, a także do ustawienia wartości domyślnej. Wszystko działa zgodnie z oczekiwaniami do Dodaję optionsValue
wiązanie, w którym to punkcie menu nie pokazuje już prawidłowej wartości początkowej przy ładowaniu strony.Jak używać knockout.js do budowania elementów <select> s zarówno z tekstem, jak i wartościami, a także ustawić początkowo wybraną wartość?
Innymi słowy, to działa:
<select data-bind="value: selectedAccount, options: accounts, optionsText: 'name'"></select>
... ale to nie działa:
<select data-bind="value: selectedAccount, options: accounts, optionsText: 'name', optionsValue: 'id'"></select>
Oto moje uproszczone, kompletny kod:
<!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 Spodziewam się, że menu wyświetli "Oszczędności" wybrane domyślnie. Dzieje się tak tylko wtedy, gdy usunę opcję optionsValue.
Z góry dzięki!
Nie jest to bezpośrednio związane z Twoimi pytaniami, ale możesz uzyskać niezwykłe wyniki, jeśli powiązanie "wartości" ma miejsce przed opcjami. –