2013-12-23 149 views
1

我在KO新的,而我失去了一些東西重要:(KnockoutJS結合選擇

請你告訴我,爲什麼這些代碼不工作小提琴是在這裏:?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

當你的小提琴中包含資源時要小心。 「Github不是CDN」,JSFiddle一直堅持這一點。 –

回答

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

在您的原始代碼中,當您調用ko.applyBindings(viewModel);時,KO將selectedItem設置爲undefined,因爲應用綁定時items集合爲空。因此,當你填充你的viewModel.items時,你的原始selectedItem丟失(另請參閱此fiddle)。