2012-05-02 4 views
16

Rozumiem, żeJak zrobić wybierz element z różnymi wartościami następnie tekst używając 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> 

stworzy wybierz element, jak:

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

Ale co, jeśli chcę go mieć na przykład:

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

jaki byłby mój kod?

wiem, że mogę używać optionsText wypełnić opcje, ale optionsValue nie wydają się działać dla mnie

okrzyki, Daniel

+0

To jest pokryta dość dobrze w ich dokumentacji: http://knockoutjs.com/documentation/options- binding.html –

+0

@JasonGoemaat Nie zrozumiałem podanego przykładu i nie zadziałało, pracuję nad odpowiedzią, którą Niemeyer dał –

Odpowiedz

26

co chcesz mapować swoją tablicę ['France', 'Germany', 'Spain'] do struktury, które mają oddzielne właściwości dla value i text.

Na przykład

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

Następnie można powiązać przeciwko nim podoba:

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

, dziękuję '

Kraj docelowy:

' –