我有以下问题:
我有一个{ 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/
我相信这很简单,但我对淘汰赛很新,而且我无法按预期工作。任何有关工作代码的帮助将不胜感激。谢谢。
答案 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 );
}