2012-05-02 17 views
16

entiendo quecómo hacer que un elemento de selección con diferentes valores a continuación un texto con Knockout.JS

<p>Destination country: <select data-bind="options: availableCountries"></select></p> 

<script type="text/javascript"> 
    var viewModel = { 
     availableCountries : ko.observableArray(['France', 'Germany', 'Spain']) // These are the initial options 
    }; 

    ko.applyBindings(viewModel); 
</script> 

creará un elemento de selección como:

<select data-bind="options: availableCountries"> 
    <option value="France">France</option> 
    <option value="Germany">Germany</option> 
    <option value="Spain">Spain</option> 
</select> 

pero lo que si quiero que sea como:

<select data-bind="options: availableCountries"> 
    <option value="1">France</option> 
    <option value="2">Germany</option> 
    <option value="3">Spain</option> 
</select> 

¿cuál sería mi código?

Sé que puedo utilizar optionsText para llenar las opciones, pero optionsValue no parece funcionar para mí

aplausos, Daniël

+0

Esto se cubre bastante bien en su documentación: http://knockoutjs.com/documentation/options- binding.html –

+0

@JasonGoemaat No entendí el ejemplo que dieron, y no lo puse a funcionar, voy a trabajar en la respuesta RP Niemeyer dio –

Respuesta

26

Usted quiere asignar la matriz ['France', 'Germany', 'Spain'] a una estructura que lo haría tienen propiedades separadas para value y text.

Por ejemplo,

[ 
    { value: 1, name: 'France' }, 
    { value: 2, name: 'Germany' }, 
    { value: 3, name: 'Spain' } 
] 

A continuación, puede unirse contra ella desea:

<select data-bind="options: availableCountries, optionsText: 'name', optionsValue: 'value'"></select> 
+0

funcionó, gracias '

País de destino:

' –

Cuestiones relacionadas