从淘汰赛中选择中获取价值

时间:2016-07-29 03:38:12

标签: knockout.js

我使用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个索引处显示项目的值,因为它是被编码的。

但是当我尝试写这个时:

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

它给了我这个错误:

  

无法解析绑定。
  消息:TypeError:无法获取属性&#39; text&#39;未定义或空引用;
  绑定值:text:$ root.personalassettype_dd()[typeid] .....

所以这意味着某种程度上它没有得到typeid&#39;当我用它代替数组索引时。

注意:我也尝试在引号中传递typeid,但这不起作用。

1 个答案:

答案 0 :(得分: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>