1

为什么此绑定失败并出现“未找到值”异常?

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

选项数组的数据是这样的:

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

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

4

1 回答 1

2

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

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

我假设:

  1. options绑定创建了一个新的绑定上下文,例如withforeach
  2. optionsValue 和 optionsText 就像text绑定一样,您只需指定属性名称,KO 神奇地绑定到属性

这两个假设都是错误的,因为我在通过 KO 资源尝试找出我做错了一个小时后意识到。啊!

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

于 2016-03-08T02:46:02.297 回答