2013-11-01 70 views
1

這裏的小提琴:KnockoutJS選擇下拉無法用所選值預先填充

http://jsfiddle.net/adNuR/2187/

// Template 
<div data-bind="foreach: lines"> 
    <p data-bind="text: item.description"></p> 
    <select data-bind="value: item, options: sampleOptions, optionsText: 'description', optionsCaption: 'Please select'"></select> 
</div> 


// JS 
var sampleOptions = [ 
     { description: "item 1" }, 
     { description: "item 2" }, 
     { description: "item 3" }, 
     { description: "item 4" } 
     ];  

var Model = function() { 
    var self = this; 
    self.lines = ko.observableArray([ 
     { item: { description: "item 1" } }, 
     { item: { description: "item 2" } } 
    ]); 
}; 

ko.applyBindings(new Model()); 

基本上我有綁定到一個選擇框的對象,但它不是選擇在下拉列表中選擇的選項。它會顯示正確的值,如果我將選定的選項的文本數據綁定到另一個元素,但我似乎無法得到選擇框加載與初始預選值無論我嘗試。

也許有些瑣碎和愚蠢,但我似乎無法弄清楚它......任何幫助表示讚賞。

回答

1

你的問題可能是這個副本:Select element's initial value

所以基本上你需要比較兩個字符串,看看哪些價值應該首先在下拉菜單中進行設置。它看起來不適用於整個對象。要快速解決您的例子是這個(更新小提琴:http://jsfiddle.net/adNuR/2189/):

<select data-bind="value:item.description, options: sampleOptions, optionsValue:'description', optionsText: 'description', optionsCaption: 'Please select'"></select> 

但你可能會想一些適當的ID添加到對選擇和比較基於這些。

+0

是的,真正的代碼要複雜得多,並且保存動態生成的對象,並在其中嵌入列表,以表示稍後在表單中的其他選擇框的可能值,所以我確實需要保存整個對象而不僅僅是一個文字。事實證明,由於你提到的原因,它不會很好地工作,所以我現在只是重新修改它而完全不同,而且看起來沒問題。將接受這個答案,因爲它確實解決了小提琴中概述的具體問題:)謝謝! – ARW

相關問題