我不是100%肯定,我正確地理解你的問題,但我會給它一個鏡頭:)
你寫:
CountriesDropDown =將加載所有國家......在此基礎上
,當你初始化knockoutJS視圖模型,你可以初始化一個observable array包含代表的國家名單下拉/ select
元素的可能值。
要做到這一點,你可以做一個Ajax請求得到你需要填充的下拉列表中的數據,例如:
// Get all countries
$.getJSON("/GetAllCountries", function(data) {
// Add the new data to the observable array holding the list of countries
});
這是使用observable arrays在視圖模型的數據表示和options
bindings一個好主意在視圖中(可觀察數組對數組進行任何更改都會立即影響UI)。
然後,你可以有三個觀測分別代表在三個下拉列表中選擇的值 - 例如:
self.selectedCountry = ko.observable();
self.selectedState = ko.observable();
self.selectedCity = ko.observable();
(記住options
綁定允許您指定「域」應該包含。選定的值使用value
參數)
繼續在以前的報價你寫:
CountriesDropDown = WIL L負載所有國家,並選擇一個與所選城市
的CountryID要做到這一點,你可以做一個AJAX請求,詢問是哪個國家的某個城市對應的Web服務器。利用這一結果,你可以使用淘汰賽這樣改變國家下拉列表中選擇的值:
self.selectedCountry(theCountryToBeSelected);
然後你寫:
StatesDropDown =將加載所選國家的所有狀態
爲了達到這個目的,您可以利用淘汰賽訂閱觀察變化的能力,當選定的國家發生變化時,您可以更改州下拉菜單的內容 - 例如像這樣:
self.selectedCountry.subscribe(function(newSelectedCountry) {
// Get all states based on the new selected country
$.getJSON("/GetStatesForCountry/" + newSelectedCountry.id, function(data) {
// Add the new data to the observable array holding the list of states
});
});
最後,你寫:
CitiesDropDown =將加載所選國家的所有城市
要做到這一點,你可以使用同樣的原理如上:根據所選狀態的ID創建AJAX請求,並使用從服務器返回的數據填充代表城市列表的可觀察數組。
如果這不是你正在尋找的東西,我希望我至少能夠激勵你或者將你指向正確的方向:)
謝謝。這是我需要的。 –