knockout optionsText / optionsValue bindings不起作用

时间:2016-03-08 02:46:02

标签: knockout.js knockout-binding-handlers

为什么此绑定失败并且未找到"值"异常?

<select data-bind="options: $root.arr, optionsValue: key, optionsText: value"></select>

选项数组的数据如下:

ko.observableArray ([ 
  {key: 'foo', value: '1'}, 
  {key: 'bar', value: '2'}
])

我已经解决了我自己的问题但是放下了StackOverflow面包屑路径,以便其他人不会浪费时间,就像我试图解决这个问题一样。 ; - )

1 个答案:

答案 0 :(得分:2)

optionsText和optionsValue中使用的属性名称需要引号。像这样:

<select data-bind="options: $root.arr, optionsValue: 'key', optionsText: 'value'"></select>

我认为:

  1. options绑定创建了一个新的绑定上下文,如withforeach
  2. optionsValue和optionsText的工作方式类似于text绑定,您只需指定属性名称,KO就会神奇地绑定到属性
  3. 两个假设都是错误的,因为我意识到经过一个小时的步骤通过KO来源试图弄清楚我做错了什么。 Arrrrgh!

    相反,如果您没有使用函数为每个选项提取值或文本,而您想要访问属性,则需要将属性名称括在引号中。如果您仔细阅读示例代码,则会显示在documentation中。我没有。 - (