9

我正在使用 knockoutjs 绑定选择列表。这是一个示例 ,我想获取选定的选项文本而不是选定的值。

如何使用 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>
4

3 回答 3

10

最简单的方法是删除 optionsValue 绑定。当您不指定 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>

见小提琴

于 2013-10-24T10:48:44.313 回答
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);
于 2013-10-24T10:04:23.610 回答
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;
    });
于 2016-06-29T08:46:47.067 回答