KO optionsValue没有完全绑定?

时间:2014-05-05 23:11:41

标签: knockout.js knockout-2.0

我有以下内容:

    <select data-bind="options: colorOptions, optionsText: 'DisplayName', optionsValue: 'Id', value: Color.Id, optionsCaption: 'Select...'"

colorOptions看起来像这样

[
    {

        "DisplayName": "Blue",
        "Id": 22028
    },
    {
        "DisplayName": "Yellow",
        "Id": 22029
    }
]

Color看起来像这样(具有可观察属性的对象):

{
    "DisplayName": "Blue",
    "Id": 22028
}

这似乎有效,除了当我进行更改时颜色上的DisplayName没有更新的事实 - 只有Id是。我是否必须手动重新分配DisplayName,还是可以告诉knockout替换整个对象?

1 个答案:

答案 0 :(得分:0)

使用此绑定处理程序进行更改时,仅设置了值,并且由于您已将Color.Id指定给值,因此更改选项时会更新此值。

您已将optionsValue设置为&#39; Id&#39;告诉绑定处理程序该值来自数据源上的Id属性,因此如果要更新整个Color属性,则需要执行以下操作

  • 删除optionsValue: 'Id'这意味着该值设置为数组中的整个项目,而不是单个属性
  • value: Color.Id更新为value: Color
  • 您可能需要将模型上的颜色更改为可观察的颜色(如果还没有)。只有在您需要双向绑定(即通过更改此属性来设置选项值的能力)时才需要这样做