1

わかりましたので、次のjsonがあります:

{"VehicleMakes":
[{"VehicleModels":[],"ID":3,"Description":"BMW"},
{"VehicleModels":[],"ID":1,"Description":"Ford"},
{"VehicleModels":[{"ID":1,"Description":"Astra","MakeID":2},{"ID":2,"Description":"Corsa","MakeID":2}],"ID":2,"Description":"Vauxhall"}],
"VehicleModels":[],
"SelectedMake":"Vauxhall","SelectedModel":null,"Postcode":null}

したがって、基本的に私はいくつかの車両メーカーを持っており、1 つのメーカーには多くのモデルを含めることができます。

次に、次のモデルがあります。

 function SearchModel() {
        this.SearchCriteria = "";
        this.SelectedMake = ko.observable();
        this.SelectedModel = ko.observable();
    }  

そして、このhtml:

<select id="vehiclesMake" data-bind="options: SearchCriteria.VehicleMakes, optionsText: 'Description',optionsValue: 'Description', value: SelectedMake, optionsCaption: 'Choose...'"></select>      

 <div data-bind="if: SelectedMake">
            <select data-bind='options: SelectedMake().VehicleModels, optionsText: "Description", optionsCaption: "Select...", optionsValue: "Description", value: SelectedModel'></select>
                 </div>

したがって、基本的には、最初のドロップダウンで車両メーカーが選択されたときに、そのモデルを 2 番目のドロップダウンに表示しようとしています。

最初のドロップダウンは問題なく入力され、選択すると2番目のドロップダウンが表示されますが、入力されていません。

すべての json をプロパティ SearchCriteria に割り当てることに注意してください。

私は何を間違っていますか?

4

1 に答える 1

1

設定を使用した最初の選択では、テキストを選択の値としてoptionsValue: 'Description'使用するようにノックアウトに指示します。Descriptionしたがって、VehicleMake オブジェクトの代わりにテキストSelectedMakeが含まれます。Description

したがって、を削除するだけでoptionsValue問題なく動作するはずです。

<select id="vehiclesMake" data-bind="options: SearchCriteria.VehicleMakes, 
                                     optionsText:  'Description', 
                                     value: SelectedMake, 
                                     optionsCaption: 'Choose...'"></select>

JSFiddleのデモ。

于 2013-01-12T09:55:41.737 に答える