【问题标题】:Knockout dropdown select list binding array of name/value pairs to observablearrayKnockout 下拉选择列表将名称/值对的数组绑定到 observablearray
【发布时间】:2014-07-29 14:09:22
【问题描述】:

jsFiddle Demo

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

如果您查看我的 jsfiddle,我有一个包含名称/值对 (axis1items) 的对象,其中包含选择列表项。我还有一个 observablearray 保存所有结果(患者诊断),然后将其序列化为 JSON。

当你选择一个item时,值被设置为axis1items item,它被序列化为:

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

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

"DiagnosisID": 549

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

此外:任何其他关于如何改进我的代码的建议将不胜感激!

【问题讨论】:

  • 你的 js fiddle 有一些 js 错误,无法查看。
  • 对不起,我发布了一个旧链接。我用正确的链接更新了帖子。

标签: javascript mvvm knockout.js


【解决方案1】:

您就快到了,您只需将optionsValue 设置为您的'dxvalue' 属性,其中optionsValue parameter

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

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

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

演示JSFiddle.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-06
    • 1970-01-01
    • 2016-08-18
    • 2018-05-11
    • 2018-04-26
    • 2019-02-01
    • 2012-01-31
    • 2019-08-21
    相关资源
    最近更新 更多