我是KO的新人,我错过了一些重要的事情:(
请告诉我为什么这些代码不起作用?小提琴在这里:http://jsfiddle.net/Z8p4B/ 我很沮丧。为什么selectedItem没有设置值"选择"。
HTML:
<select data-bind="options: items, optionsText: 'name', optionsValue: 'id', value: selectedItem"></select>
视图模型:
var viewModel = {
/*selectedItem: ko.observable(3), I also try but without success */
selectedItem: 3,
items: ko.observableArray()
};
ko.applyBindings(viewModel);
setTimeout(function() {
viewModel.items([
{id: 1, name:"pencil"},
{id: 2, name:"pen"},
{id: 3, name:"marker"},
{id: 4, name:"crayon"}
]);
});
由于
答案 0 :(得分:2)
您需要在填充selectedItem
数组后设置items
:
var viewModel = {
selectedItem: ko.observable(),
items: ko.observableArray()
};
ko.applyBindings(viewModel);
setTimeout(function() {
viewModel.items([
{id: 1, name:"pencil"},
{id: 2, name:"pen"},
{id: 3, name:"marker"},
{id: 4, name:"crayon"},
]);
viewModel.selectedItem(3);
});
演示JSFiddle。
在您的原始代码中,当您调用selectedItem
时,KO会将undefined
设置为ko.applyBindings(viewModel);
,因为在应用绑定时items
集合为空。因此,当您填充viewModel.items
时,您的原始selectedItem
将丢失(请参阅此fiddle)。