在下拉列表中显示所选项目

时间:2014-12-08 22:00:05

标签: knockout.js

这似乎应该很简单,但它证明是麻烦的。我尝试在下拉菜单之外创建文本,具体取决于选择下拉列表中的项目。代码的上下文相关部分如下所示:

<h5 data-bind="visible: Values().Options == 0, text: 'a'"></h5>
<h5 data-bind="visible: Values().Options == 1, text: 'b'"></h5>
<h5 data-bind="visible: Values().Options == 2, text: 'c'"></h5>

什么都没有出现,但奇怪的是,当我这样做时:

<h5 data-bind="text: Values().Options"></h5>

根据选择的选项,0,1或2显示正如我所期望的那样。我在这里缺少什么?

请注意我对html很新。

1 个答案:

答案 0 :(得分:0)

我为你创建了一小段代码。您可以运行它(使用下面的按钮)并查看结果。

此外,官方Knockout文档中的这篇文章可能对您有用:http://knockoutjs.com/documentation/options-binding.html。它涵盖了您想要将Knockout绑定应用于<select>输入的情况。

&#13;
&#13;
function Item(arg) {  
  var self = this;
  
  self.value = arg.value;
  self.text = arg.text;
}

var viewModel = {      
  allItems: ko.observableArray([
    new Item({value: 0, text: 'a'}),
    new Item({value: 1, text: 'b'}),
    new Item({value: 2, text: 'c'})
  ]),
  
  selectedItem: ko.observable()
};

ko.applyBindings(viewModel);
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>

<select data-bind="options: allItems, value: selectedItem, optionsText: 'value'"></select>

<h5 data-bind="text: selectedItem().text"></h5>
&#13;
&#13;
&#13;