Estoy usando knockout.js para construir un <select>
elemento <option>
s, y también para establecer su valor seleccionado por defecto. Todo funciona como se espera hasta Agrego el enlace optionsValue
, en cuyo punto el menú desplegable ya no muestra el valor inicial correcto en la carga de la página.¿Cómo se usa knockout.js para construir un elemento <select> del elemento <option> s con texto y valores, y también establecer un valor inicialmente seleccionado?
En otras palabras, esto funciona:
<select data-bind="value: selectedAccount, options: accounts, optionsText: 'name'"></select>
... pero esto no funciona:
<select data-bind="value: selectedAccount, options: accounts, optionsText: 'name', optionsValue: 'id'"></select>
Aquí está mi simplificada, código 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 esperaría que el menú desplegable muestre "Ahorros" como se seleccionó por defecto. Solo lo hace si elimino el enlace optionsValue.
¡Gracias de antemano!
No está directamente relacionado con sus preguntas, pero puede obtener algunos resultados inusuales si el enlace 'value' es anterior a' options'. –