在下拉列表中预定义所选值

时间:2012-04-26 15:33:29

标签: knockout.js

我有以下问题:

我有一个{ 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/

我相信这很简单,但我对淘汰赛很新,而且我无法按预期工作。任何有关工作代码的帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:13)

你是对的,对于knockout.js来说这确实非常简单。

可以使用“value”绑定将observable绑定到当前选定的选项:

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

现在,只需使用带有“isSelected == true”的对象作为此可观察对象的初始值:

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/