2015-10-05 130 views
1

,假设我们的选项数组包含对象,如本淘汰赛选项结合,嵌套optionsValue

{ 
    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/

+0

可能重复的[Javascript knockout绑定嵌套对象不工作](http://stackoverflow.com/questions/20503805/javascript-knockout-binding-nested-objects-not-working) –

回答

4

我们可以使用函数代替字符串来解决此问题。从淘汰赛的documentation

类似optionsText,你也可以通过所谓的optionsValue到指定对象的属性应该被用来设置该KO产生<option>元素值属性的附加参数。 您也可以指定一个JavaScript函数来确定此值。此函数将接收所选项目作为其唯一参数,并返回一个字符串用于<option>元素的值属性。

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

JSFiddle demo

+0

非常感谢,这是工作大 – stackoverfloweth