淘汰赛选项绑定,嵌套的 optionsValue

sta*_*eth 1 javascript knockout.js

让我们假设我们的选项数组包含这样的对象

{
    id: 1,
    name: "Wisconsin",
    attr: {
        color: "red"
    }
}
Run Code Online (Sandbox Code Playgroud)

所以用淘汰赛绑定我们可以写这样的东西,

<select data-bind="
    options:availableStates, 
    optionsText:'name', 
    optionsValue:'id', 
    value:selectedStateId">
</select>
Run Code Online (Sandbox Code Playgroud)

但是,如果我想要optionsValue = attr.color该值为空

https://jsfiddle.net/xxhc9wwh/1/

Jam*_*lly 5

我们可以使用函数代替字符串来解决这个问题。来自 Knockout 的文档

与 类似optionsText,您还可以传递一个额外的参数optionsValue,该参数被调用来指定应该使用哪些对象的属性来设置<option>KO 生成的元素的 value 属性。您还可以指定一个 JavaScript 函数来确定此值。此函数将接收所选项目作为其唯一参数,并应返回一个字符串以用于<option>元素的 value 属性。

optionsValue: function(self) { return self.attr.color }
Run Code Online (Sandbox Code Playgroud)

JSFiddle 演示