Knockout.js 如何使用knockoutjs在select中单独绑定数据

Knockout.js 如何使用knockoutjs在select中单独绑定数据,knockout.js,Knockout.js,我有一个从ObservalArray中选择的列表,当我在first select中选择一个数据时,它将绑定下一个select中的数据。这就是我的代码中的样子 html: 代码中存在的问题是,所有第二列选择都绑定到相同的“$parent.AbsenceReasons”,因此在更改事件处理程序中,一旦更改self.AbsenceReasons,所有第二列选择都将更改,因为这是它们绑定到的 解决方案非常简单: 每个参与者都应该有自己的“缺席原因” 选择的第二列应绑定到每个参与者的缺席原因 而chang

我有一个从ObservalArray中选择的列表,当我在first select中选择一个数据时,它将绑定下一个select中的数据。这就是我的代码中的样子

html:


代码中存在的问题是,所有第二列选择都绑定到相同的“$parent.AbsenceReasons”,因此在
更改事件处理程序中,一旦更改self.AbsenceReasons,所有第二列选择都将更改,因为这是它们绑定到的

解决方案非常简单:

  • 每个参与者都应该有自己的“缺席原因”
  • 选择的第二列应绑定到每个参与者的缺席原因
  • change
    事件处理程序只更改特定参与者的缺席原因

  • 代码中存在的问题是,所有第二列选择都绑定到相同的“$parent.AbsenceReasons”,因此在
    更改事件处理程序中,一旦更改self.AbsenceReasons,所有第二列选择都将更改,因为这是它们绑定到的

    解决方案非常简单:

  • 每个参与者都应该有自己的“缺席原因”
  • 选择的第二列应绑定到每个参与者的缺席原因
  • change
    事件处理程序只更改特定参与者的缺席原因

  • 是的,这就是我想要的。只有同一行中的将更改。thanks@comfreakph顺便说一句,我更新了我的答案,我刚刚看到你在标题中提到你的问题,请原谅。是的,这就是我想要的。只有同一行中的将更改。thanks@comfreakph顺便说一句,我更新了我的答案,我刚刚看到你在标题中提到了你的问题,请原谅。
    <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>
    
        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);
        };
    };