2012-04-26 52 views
7

我有以下問題:預定義在下拉列表中所選值

我有對象在格式{ isSelected: false, Message: "Test1" }, { isSelected: true, Message: "Test2"}可觀察到的陣列。我在這個可觀察數組的視圖中生成一個選擇列表。我希望預選屬性isSelected = true的值(在本例中爲:Message:「Test2」)。這裏是我的代碼:

淘汰賽:

function ViewModel() 
{ 

    this.DummyOptions = ko.observableArray([{ isSelected: false, Message: "Test1" }, { isSelected: true, Message: "Test2"}]); 
    this.selectedValue = ko.observable(); 
} 

ko.applyBindings(new ViewModel()); 

HTML:

<div> 
Dummy 
<select id="dummy" data-bind="options: DummyOptions, optionsText: 'Message'"></select> 
</div> 

小提琴:http://jsfiddle.net/PsyComa/RfWVP/52/

我相信這將是簡單的,但我很新的淘汰賽,我是無法按預期工作。任何工作代碼的幫助將不勝感激。謝謝。

回答

10

你說得對,這對於knockout.js確實很簡單。

可觀察到的可以結合到使用「值」結合當前選定的選項:

<select data-bind="options: DummyOptions, 
        optionsText: 'Message', 
        value: selectedValue"></select> 

現在,只使用該對象與「isSelected ==真」,因爲這可觀察到的初始值:

function ViewModel() { 
    this.DummyOptions = ko.observableArray([...]); 

    // Filter the array to find the first element with isSelected == true 
    var selectedOption = ko.utils.arrayFirst(this.DummyOptions(), function(item) { 
     return item.isSelected; 
    }); 

    // Use this option as the initial value 
    this.selectedValue = ko.observable(selectedOption); 
} 

http://jsfiddle.net/RfWVP/54/

+0

謝謝。正是我需要的。 – Mdb 2012-04-27 07:22:04