2016-08-06 36 views
1

Ich weiß, Sie können einen Wert auf Dropdown mit OptionsValue setzen, aber ohne es zu verwenden, möchte ich einen Wert festlegen . Bitte sieh dir diese Geige an. Ich möchte das Dropdown mit einem Objekt anstelle einer Eigenschaft aus dem Objekt auswählen. hier ist meine Geige:Knockout - Ich möchte einen Wert auf Dropdown nach Liste in der Dropdownliste, nicht nur nach ID geladen, sondern als Objekt

https://jsfiddle.net/dqUAz/1402/

Bitte helfen. Vielen Dank.

auch den Code:

var CountryModel = function(data){ 
    var self = this; 
    self.id = ko.observable(data.id); 
    self.name = ko.observable(data.name); 
}; 
var viewModel = function(data) { 
    var self = this; 
    self.selectedChoice = ko.observable(); 
    self.countries = ko.observableArray([ 
     new CountryModel({id: "1", name: "Russia"}), 
     new CountryModel({id: "2", name: "Qatar"})]); 
    self.sendMe = function(){ 

     alert(ko.toJSON({ selectedCountryId: this.selectedChoice()})); 
    }; 
    self.selectedChoice({id: "1", name: "Russia"}); 
}; 

ko.applyBindings(new viewModel()); 

<select data-bind="options: countries, optionsText: 'name', value: selectedChoice, optionsCaption: 'Choose..'"></select> 
<br/> 

Und ich möchte dynamisch setzen, das ist nur ein Beispiel.

Antwort

2

In der selectedChoice Observable müssen Sie kein Objekt mit den gleichen Daten übergeben, aber die gleiche Instanz aus dem Länder-Array.

Sie können das verwenden:

var viewModel = function(data) { 
    // ... 
    self.selectedChoice(self.countries()[0]); 
}; 
+0

Dank. aber ich möchte das Objekt dynamisch auf den Wert setzen. –

+0

Was meinst du mit dynamisch? Sie können diese Technik verwenden, um den Wert für ein beliebiges Element in der Länderliste festzulegen. – recursive