請參閱本小提琴:http://jsfiddle.net/44AwW/3/Knockout.js:綁定對象作爲在<select> /值下拉
3秒鐘之後,一個新的「地點」被添加到<table>
(作爲一種方式來模擬Ajax的加載數據)。 'Place'是一個簡單的JS對象,但它的兩個屬性(City和PlaceType)本身就是對象 - 每個對象都有一個'id'和'name'屬性。
var Place = {
id: 1,
name: "Paradiso",
placeType: {
id: 1,
name: "Concert Hall"
},
city: {
id: 1,
name: "Amsterdam"
},
address: "Somewhere in the city"
}
單擊編輯選項時,請從放置在網格中的值應在形式設置:在城市和地點類型<select>
S的關係分別顯示「阿姆斯特丹」和「音樂廳」,但只顯示/設置「姓名」和「地址」。
現在,當我通過表單本身和添加按鈕添加一個新的地方,然後單擊表格中剛創建的地方的編輯鏈接時,它的所有屬性都確實設置並顯示在表單中,包括City和PlaceType。
因此,通過表單創建並添加到observableArray(因此在<table>
上顯示)的位置在使用編輯按鈕時,其所有屬性值都可以正確顯示,但當以編程方式添加位置時(如在小提琴中)或通過ajax,City和PlaceType屬性無法設置並顯示在表單上。
我錯過了什麼?
你現在就在。我老實說,這些對象的概念並不匹配,只是「看起來相同」,但我只是覺得KO非常棒,足以讓它工作:P - 無論如何,我已經在考慮用find函數來查看對象。我嘗試了'optionsValue',但無法使其工作 - 您能否就此方法提供任何其他幫助? – 2013-03-13 04:33:12
我加了一個使用'optionsValue'的例子。 – 2013-03-13 09:01:37