根据使用淘汰赛选择的选择下拉列表的值,返回所选选择下拉列表的文本?

时间:2014-12-01 20:09:11

标签: javascript html knockout.js

我正在尝试使用Knockout获取下拉菜单的选定文本,但问题是,value绑定返回的值是所选选项的文字value="",这只是一个数字ID(考虑到我试图显示名称(存储在文本中)而不是ID,这不是很有用。

例如,这是我的DOM结构:

 <select data-bind="options: siteUsers, optionsText: 'UserName', optionsValue: 'UserId', optionsCaption: 'Select...', value: addedUserId"></select>

我希望addedUserId成为该选项的文字文本(即UserName,而不是UserId)。我该怎么取这个?

我必须使用计算机吗?如果是这样,我将如何实现这样的功能?

2 个答案:

答案 0 :(得分:0)

只需将optionsValue更改为'UserName'。

<select data-bind="options: siteUsers, optionsText: 'UserName', optionsValue: 'UserName', optionsCaption: 'Select...', value: addedUserId"></select>

否则,您可以使用ID循环选项并找到所选名称。

答案 1 :(得分:0)

如果我正确理解了您的问题,那么当您在下拉列表中选择某些内容时,您需要SelectedText之类的内容。

在这种情况下,您只需订阅value绑定addedUserId

self.optionstext=ko.observable(); 
self.addedUserId.subscribe(function(selVal){ //selVal is alias of `optionsValue` 

//if needed check undefined condition further
var data = ko.utils.arrayFirst(self.siteUsers(),function(item){
           if(selVal === item.UserId())
           {return true;} else {return false;}
       });

if(data != [])
self.optionstext(data[0].UserName());

});

您也可以使用computed,但订阅最适合提高效果。