Knockout绑定为select中的每个选项的多个值

时间:2012-07-27 08:45:55

标签: html forms knockout.js

在表单中,我有一个带有多个选项的选择框,每个选项代表一个包含各种变量的报表,这些变量会影响表单的其余部分。有些报告需要开始日期,有些报告需要结束日期,有些报告需要两者。我已将每个报告的要求绑定到选项元素,如下所示:

<select data-bind="value: ReportId">
    <option value="ID" data-hasStartDate="BOOL" data-hasEndDate="BOOL">Report name</option>
</select>

<input data-bind="visible: hasStartDate" />
<input data-bind="visible: hasEndDate" />

ID为报告的ID,BOOL为true或false。我使用knockout将select-box的值数据绑定到reportId。但我无法弄清楚如何将hasStartDate和hasEndDate-values绑定到Knockout observable以显示相应的表单元素。

即使使用自定义绑定,我还需要一个普通的jQuery onChange事件,以便将值应用于Knockout值hasStartDate和hasEndDate。是否有可能完全使用Knockout本身完成?

1 个答案:

答案 0 :(得分:2)

您是否尝试将options binding用于选择框?

您也无法使用data-whatever="some value"绑定敲除。您始终使用数据绑定,如下所示:data-bind="bindingtype: value"

修改 话虽如此......如果你想从<select>元素中的选定选项中获取数据,我会使用以下jQuery:

$("select").on('change', function() {
   var selectedData = $(this).find(":selected").data("stuff");
});

然后,您可以使用selectedData并将其应用于挖空视图模型。

小提琴中的工作示例:http://jsfiddle.net/RZq6Q/4/