fiddle和视图约会选项卡中,有一个添加计时按钮。单击同一按钮时,将插入新行。我在配置文件选项卡中保存了一个按钮,单击该按钮可在控制台上打印JSON值。

我的问题

假设我单击2次添加计时按钮,因此插入了2行。现在,我从工作日菜单中选择了某天,按时输入,并从下拉列表中选择了医院。现在,当我单击保存按钮时(在配置文件选项卡中)我想要JSOn,但是在我的情况下,HospitalID保持空白。因此现在我创建了变量并为其分配了5,如此fiddle所示

但是现在我无法对hospitalID=5进行硬编码,因为目前只有一所医院,但是将来我可以再添加几家医院,因此根据下拉列表中选择的医院,我希望使用该医院的ID

最佳答案

hospitals数组必须是具有两个键的对象的数组,一个用于ID,另一个用于医院名称。

var hospitals = [];
for (var i = 0; i < schedules.length; i++) {
    hospitals.push({ name: schedules[i].hospital(), id: schedules[i].hospitalId() });
}


然后,您可以在optionsText中为下拉菜单指定optionsValuedata-bind参数。另外,请确保更改value参数以在计划中使用hospitalId字段。

<select class="span8" name="hospital"
    data-bind="options: $parent.hospitalOptions,
               value: hospitalId,
               optionsCaption: 'Select Hospital',
               optionsText: 'name',
               optionsValue: 'id'" data-required="true" data-trigger="change">
</select>


现在,无论何时修改下拉列表,hospitalId字段都会在您的模型中更新,但hospital字段不会更新。我建议将其转换为一个计算字段,该字段根据hospitalId值从查询中获取正确的医院名称。

JSFiddle:http://jsfiddle.net/5nZRh/17/

10-07 21:47