2016-07-29 68 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