在淘汰赛中获取选定的选项文本

时间:2013-10-24 09:53:47

标签: javascript jquery knockout.js

我使用knockoutjs绑定选择列表。这是一个Sample ,我希望选择选项文本而不是选定的值。

如何使用knockoutjs获取它?

<select id="projectMenu" name="projectMenu" data-bind="   
        value: selectedProject,
        options:        projectFilters,
        optionsText:    'a', 
        optionsValue:   'b',   
        optionsCaption: '-- Select Project --'
    ">
    </select>
<b>Selected Project:</b> <span data-bind="text: selectedProject"></span>

3 个答案:

答案 0 :(得分:10)

最简单的方法是删除optionsValue绑定。 当您不sepcify optionsValue绑定时,整个项目将是选定的值。

<select id="projectMenu" name="projectMenu" data-bind="   
        value: selectedProject,
        options:        projectFilters,
        optionsText:    'a',         
        optionsCaption: '-- Select Project --'
    ">
    </select>
<b>Selected Project:
<span data-bind="text: selectedProject() ? selectedProject().a : 'no selection '"></span>

See fiddle

答案 1 :(得分:1)

到目前为止,我担心只使用简单的绑定是不可能的。但您可以轻松创建基于optionValue

选择optionText的computedObservable
vm.selectedOption= ko.computed(function () { 
   for (var i = 0; i < this.projectFilters().length; i += 1) {
       var data = this.projectFilters()[i];
       if (data.a === this.selectedProject()) {
           return data.b;
       }
   }
   return null;
}, vm);

答案 2 :(得分:1)

vm.selectedCountryName = ko.computed(function () {
        var text = '';
        ko.utils.arrayForEach(vm.countries(), function (item) {
            if (item.CountryId == vm.selectedCountry()) {
                text = item.CountryName;
                return;
            }
        });
        return text;
    });