Knockout下拉选择列表绑定名称/值对的数组到observablearray

时间:2014-06-09 03:52:38

标签: javascript mvvm knockout.js

jsFiddle Demo

我在学习Knockout时遇到了麻烦,我遇到了一个处理下拉式绑定的问题。基本上它是一个患者的模型,可以附加一个或多个诊断代码。

如果你看看我的jsfiddle,我有一个名称/值对(axis1items)的对象,它包含选择列表项。我还有一个observablearray,其中包含所有结果(patientDiags),然后将其序列化为JSON。

选择项目时,该值将设置为axis1items项目,并将其序列化为:

"DiagnosisID":{"dxname":"(V71.81) Abuse and neglect","dxvalue":549}

我希望最终的序列化结果只是dxvalue:

"DiagnosisID": 549

我认为可以使用计算值轻松完成此操作,更改视图模型的结构,或some other knockout specific template keyword that I am overlooking

此外:非常感谢有关如何改进我的代码的任何其他建议!

1 个答案:

答案 0 :(得分:2)

你几乎就在那里,你只需要将optionsValue设置为'dxvalue'属性optionsValue parameter

  

optionsText类似,您还可以传递名为optionsValue的其他参数,以指定应使用哪些对象的属性来设置value属性<option> KO生成的元素。

所以你的options绑定应该是这样的:

<select data-bind="options: $root.axis1items, 
                   optionsText: 'dxname', 
                   optionsValue: 'dxvalue', 
                   value: DiagnosisID" class="form-control required">
</select>

演示JSFiddle