knockout选项绑定,嵌套optionsValue

时间:2015-10-05 15:44:28

标签: javascript knockout.js

假设我们的选项数组包含诸如此

之类的对象
{
    id: 1,
    name: "Wisconsin",
    attr: {
        color: "red"
    }
}

所以对于敲除绑定,我们可以写这样的东西,

<select data-bind="
    options:availableStates, 
    optionsText:'name', 
    optionsValue:'id', 
    value:selectedStateId">
</select>

但是,如果我希望optionsValue = attr.color值为空

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

1 个答案:

答案 0 :(得分:4)

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

  

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

optionsValue: function(self) { return self.attr.color }

JSFiddle demo