2013-05-29 49 views
1

我使用Knockout 2.2.1將對象綁定到下拉列表。綁定正在將正確的項目放入列表中,但是當我嘗試獲取對象時,它不起作用。我有一個JSFiddle顯示這個問題; http://jsfiddle.net/CTBSTerry/g4Gex/Dropdownlist綁定到不返回選定對象的對象

Html 
<div style="margin-bottom: 15px;"> 
    Your Choices: 
    <select data-bind="options: choicelists[0].options, optionsText: 'otext', optionsValue: 'oprice', value: selOpt1, optionsCaption: 'Choose...'"></select> 
</div> 
<div data-bind="visible: selOpt1" style="margin-bottom: 15px;"> <!-- Appears when you select something --> 
    You have chosen<br> 
    From Object:&nbsp; 
    <span data-bind="text: selOpt1() ? selOpt1().otext : 'unknown'"></span> 
    <br>From Value:&nbsp; 
    <span data-bind="text: selOpt1() ? selOpt1() : 'unknown'"></span> 
</div> 
JavaScript: 
var mychoice = function (txt, price) { 
     this.otext = txt; 
     this.oprice = price; 
    } 
    var viewModel = { 
     prodphoto: "", 
     prodname: "", 
     prodDesc: "", 
     baseprice: "", 
     choicelists: [ 
     { 'listlabel': 'Size List', 
      'options': ko.observableArray([ 
      new mychoice('Small', 'Small|$|0.00'), 
      new mychoice('Medium', 'Medium|$|0.00'), 
      new mychoice('Large', 'Large|$|0.00'), 
      new mychoice('X Large + 2.00', 'X Large|$|2.00'), 
      ]) 
     }], 
     textlists: [], 
     selOpt1: ko.observable() 
    } 


    ko.applyBindings(viewModel); 

當您單擊下拉做出選擇我有2個跨度試圖顯示選定的價值,我想作爲選擇的不是對象只是特定的值字段。對象表示法不返回任何內容,但不返回錯誤。第二個跨度顯示選定的值,但由於它不是所選對象,我必須遍歷該對象才能獲取相關對象。 Knockout文檔顯示了一個非常相似的樣本,但我需要更復雜的視圖模型。有人能幫助我,並指出爲什麼這不起作用嗎?

感謝, 特里

回答

1

如果您從結合刪除optionsValue,然後淘汰賽會用實際的對象,而不是它的屬性。

因此,您希望從綁定中刪除optionsValue: 'oprice',然後selOpt1將填充實際對象。

示例:http://jsfiddle.net/rniemeyer/g4Gex/1/

+0

這很好用 - 謝謝!我以爲我完全效仿了這個例子,但弄了兩個例子,感覺困惑,花了幾個小時旋轉我的車輪。非常感謝這個答案,現在我可以重新實現整個解決方案。我是一個新手去淘汰賽,所以我徘徊了一下。 –