2014-10-10 37 views
3

我已經整合的分離JS在我的項目,現在我面臨設置用戶選擇值下拉一些問題,Knockout JS:將值設置爲Dropdown?下面

代碼:

<select id="regDobMonth" data-bind="options: RDOBM, optionsText: 'name', selectedOptions: selRDOBM" name="" class="date-sel month" tabindex="3"></select> 

JS文件:

RDOBY: ko.observableArray([{ name: "1986" }, { name: "1987" }, { name: "1988" }, { name: "1989" }, { name: "1990" }, { name: "1991" }, { name: "1992" }, { name: "1993" }, { name: "1994" }, { name: "1995" }, { name: "1996" }, { name: "1997" }, { name: "1998" }, { name: "1999" }, { name: "2000" }, { name: "2001" }]); 

我能夠將這些數據加載到下拉列表並能夠使用選擇所選值,

selRDOBY().name 

但我的問題是我想將此值重新設置爲下拉菜單。

例如:從後端系統我收到的2010年選擇的話,我需要把這個值設置到該下拉。

如何做到這一點。任何幫助表示讚賞。

回答

0

這裏的問題似乎是selRDOBYobservable而不是一個常規數組或observableArray。 KnockoutJS關於selectedOptions binding(您用來設置選定值)的文檔指出:

這應該是一個數組(或可觀察數組)。 KO設置元素的選定選項以匹配數組的內容。任何以前的選擇狀態都將被覆蓋。

如果您的參數是可觀察數組,則每當數組更改(例如,通過push,pop或其他可觀察數組方法)時,綁定將更新元素的選擇。如果參數不可觀察,它將只設置一次元素的選擇狀態,稍後不再更新。

與否,所述參數是可觀察到的陣列,KO將當用戶選擇或在多選擇列表取消選擇的項目,並且將更新陣列,以匹配檢測。這是您如何閱讀選擇哪個選項。

因此,您需要重新聲明您的selRDOBYobservableArray

selRDOBY: ko.observableArray([]); 

您需要修改現有的代碼以確保此更改得到了回覆。所以selRDOBY(value)任何情況下,可能需要更改爲selRDOBY([value])selRDOBY.push(value)

+0

感謝您response.I覺得你havnt明白我的意思。 selRDOBY用於獲取選定的下拉值。通過調用selRDOBY()。name我得到選定的下拉值。我的問題就像我想重新加載之前選擇的下拉值爲下拉,並將此值選爲。如果您提供一些示例,它會很好。 – Cyber 2014-10-10 09:39:27

+0

@Cyber​​是'selRDOBY'一個observableArray還是一個可觀察的? – 2014-10-10 09:48:13

+0

其selRDOBY:ko.observable('') – Cyber 2014-10-10 10:04:08