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

Sud*_*han 9 javascript jquery knockout.js

我正在使用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>
Run Code Online (Sandbox Code Playgroud)

Dam*_*ien 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>
Run Code Online (Sandbox Code Playgroud)

看小提琴


Krz*_*lak 1

就我而言,仅通过简单的绑定是不可能的。但是您可以轻松创建computeObservable,它根据optionValue选择optionText

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);
Run Code Online (Sandbox Code Playgroud)

  • @MotaChuha 除非有非常大的集合应该可以正常工作 - 现代 PC 相当快;)。我建议在拒绝这个解决方案之前进行性能测试 - 也许性能稍慢一点是可以接受的。如果不是,您可能应该编写自定义淘汰赛绑定来实现要求。 (3认同)