2016-07-29 69 views
0

我有一個使用ko綁定的select元素,它完美地顯示數據。從淘汰賽中獲得價值

<select name="assetTypeID" 
     class="form-control" 
     id="assetTypeID" 
     data-bind="options: $root.personalassettype_dd, 
        optionsValue: 'id', 
        optionsText: 'text', 
        optionsIncludeDestroyed: true, 
        value:typeid"> 
</select> 

我想在一個範圍內顯示此下拉列表的選定值。我試圖爲:

<span id="spnassetTypeID" data-bind="text: $root.personalassettype_dd.text"></span> 

有通過this Stack Overflow question走了,但沒有工作,任何想法?

我現在非常接近答案。如果我寫:

<span id="spnassetTypeID" data-bind="text: $root.personalassettype_dd()[0].text"></span> 

它適用於我顯示項目的價值在第0索引,因爲它是harcoded。

但是當我嘗試寫這樣的:

<span id="spnassetTypeID" data-bind="text: $root.personalassettype_dd()[typeid].text"></span> 

它給我這個錯誤:

Unable to parse bindings.
Message: TypeError: Unable to get property 'text' of undefined or null reference;
Bindings value: text: $root.personalassettype_dd()[typeid].....

因此,這意味着,不知怎的,它沒有得到「typeid」當我是到位數組指數。

注意:我也嘗試在引號中傳入typeid,但那不起作用。

+0

您是否檢查過[此答案](http://stackoverflow.com/a/38651148/419956)呢?這是IMO的妥善解決方案。如果你努力嘗試,你可能會得到第二種方法來工作,但這意味着你正在對抗KO,而不是充分利用你的優勢。 – Jeroen

+0

我試過了,但沒有奏效。它還從選項中刪除了「值」,我需要其他功能 – sam

+0

然後,將您的問題代碼更改爲代表您的情況的[mcve]會有所幫助。除非你告訴我們,否則我們無法知道你需要什麼,並且*就目前的代碼而言* @阿德里安的答案可能是最好的解決方案。 – Jeroen

回答

2

你給的帖子的鏈接有一個正確的答案。

您在spnassetTypeID中的文本綁定應該在您的select元素中具有值的值。 而且,刪除您的optionsValue綁定。

optionsValue的用途是用於淘汰賽以確定物品的哪個屬性(您的personalassettype_dd中的物品)將被使用。例如,如果我將optionsValue更改爲text,則typeId的值將爲選定對象的text。如果我刪除了optionsValue那麼整個選定的對象將是typeId的值。

查看此fiddle使用您的標記的最小示例。

<select name="assetTypeID" class="form-control" id="assetTypeID" data-bind="options: $root.personalassettype_dd, optionsText: 'text', optionsIncludeDestroyed: true,value:typeid"></select> 
<span id="spnassetTypeID" data-bind="text: $root.typeid().text"></span> 
+1

當然,我會更新它。謝謝。 – Adrian

+0

它沒有爲我工作 檢查我的更新以上 – sam

+0

什麼從它不起作用? 雖然如果你想繼續更新你的方法,問題在於'typeid'沒有預先用值來初始化,我猜。 'this.typeid = ko.observable(0)',這樣它就會有最初下拉的第一個值。 – Adrian