3

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

<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 为真或假。我使用敲除将选择框的值数据绑定到reportId。但是我不知道如何将 hasStartDate 和 hasEndDate-values 绑定到 Knockout observable 以显示适当的表单元素。

即使使用自定义绑定,我也需要一个普通的 jQuery onChange-event 来将值应用于 Knockout-values hasStartDate 和 hasEndDate。是否有可能完全用 Knockout 本身来完成?

4

1 回答 1

2

您是否尝试过为选择框使用选项绑定?

您也不能使用data-whatever="some value". 您总是使用data-bind,如下所示:data-bind="bindingtype: value".

编辑: 话虽这么说...如果您想从<select>元素中的选定选项中获取数据,我将使用以下 jQuery:

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

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

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

于 2012-07-27T08:48:58.480 回答