2012-08-22 32 views
0

任何人都可以請幫忙,或者給我推動如何向前邁進。讓KnockOutJS根據我的JSON數據顯示一個下拉菜單

我想與KnockoutJS一起合作一個示例應用程序(我正在學習MVC和試圖學習jQuery/Knockout)。

樣本是基於在淘汰賽培訓文檔的車的例子 - 它的我的副本/版本是在這裏:

JsFiddleExample

的JSON是相當簡單明瞭:

[{ 
    "occ": [ 
    { 
     "name": "1 Room only", 
     "price": 53.9}, 
    { 
     "name": "1 B&B", 
     "price": 62.16}, ], 

    "TypeName": "Single", 
    "TypeID": "3121", 
    "TypeCount": "2" 
    }, 
{ 
    "occ": [ 
    { 
     "name": "2 B&B", 
     "price": 24.23}, 
    { 
     "name": "2 DBB", 
     "price": 32.95}], 

    "TypeName": "Double", 
    "TypeID": "4056", 
    "TypeCount": "2" 
    }...... 

所以第一個下拉菜單鏈接到「TypeName」和「TypeID」。

當從中選擇時,Occ(第二個下拉列表)顯示該房間可用的優惠(例如2 DBB @ 32.95)。

當前有一個文本框,您可以在其中輸入您想要的數量 - 但是,我希望將其限制爲一個數字,最多爲JSON中的「TypeCount」 - 或者甚至更好,以便有另一個下拉菜單,其數字最高可達「TypeCount」。

如果可能的話,我還想限制如果單擊「添加房間」並添加另一行時顯示的內容 - 所以我不希望看到上面的行中已經選擇了任何房間類型,下一行的下拉列表。

謝謝你的任何指針,

馬克

回答

1

淘汰賽包括一個名爲ko.utils.range工具,你可以給它一個開始和結束的值。你可以用它來創建一個從1到你的TypeCount的選項數組。

有幾種方法來寫,但這裏是一個例子:

<td class='quantity' data-bind="with: category"> 
    <select data-bind="visible: $parent.product, options: ko.utils.range(1, TypeCount), value: $parent.quantity"></select> 
</td> 

更新小提琴:http://jsfiddle.net/rniemeyer/3t6hP/4/

+0

再次謝謝@ RP-尼邁耶 - 我會盡力找出有關部分不包括先前選擇的房間,從購物車的後續行中排除。我正在通過KnockOut教程進行工作!乾杯,馬克 – Mark

相關問題