我有一个从observableArray中选择的列表,当我在第一次选择数据时,它将在下一个select中绑定数据。这就是我的代码中的样子。
HTML:
<tbody data-bind="foreach: Participants">
<tr>
<td data-bind="text: Name"></td>
<td>
<select data-bind="
options: $parent.AttendanceCodes,
optionsText: 'Text',
optionsValue: 'Value',
value:$parent.AttendanceCode,
optionsCaption: 'select',
event:{change: $parent.onchange_attendancecodes}">
</select>
</td>
<td>
<select class="reason" data-bind="options: $parent.AbsenceReasons,
optionsText: 'Text',
optionsValue: 'Value',
value: $parent.AbsenceReason"></select>
</td>
</tr>
</tbody>
knockoutjs
var viewModel = function(data){
var self = this;
self.AbsenceReasons = ko.observableArray([]);
self.AttendanceCodes = ko.observableArray(attendanceCodeList);
self.Participants = ko.observableArray(participantsData);
//event
self.onchange_attendancecodes = function(){
self.AbsenceReasons.removeAll();
self.AbsenceReasons(absenceReasonsList);
};
};
答案 0 :(得分:1)
您在代码中遇到的问题是所有第二列选择都绑定到相同的“$ parent.AbsenceReasons”,所以在change
事件处理程序中,一旦您更改self.AbsenceReasons,所有第二列选择都将更改,因为这是他们必须绑定的。
解决方案很简单:
change
事件处理程序仅更改特定参与者的AbsenceReasons。