Knockout.js 从一个可观察数组中删除项会影响另一个可观察数组

Knockout.js 从一个可观察数组中删除项会影响另一个可观察数组,knockout.js,ko.observablearray,Knockout.js,Ko.observablearray,patientList和patientNames是两个可观察的数组。当我从patientList中删除项目时,我看到同样的项目也从patientNames中删除。这是因为两个数组都指向相同的底层数组。您不需要传递引用,而是需要克隆阵列,然后对克隆的阵列执行所需操作 vm.patientList(datacontext.patientNames()); var patientsForClient = vm.patientList.remove(function (patient) { retu

patientList和patientNames是两个可观察的数组。当我从patientList中删除项目时,我看到同样的项目也从patientNames中删除。

这是因为两个数组都指向相同的底层数组。您不需要传递引用,而是需要克隆阵列,然后对克隆的阵列执行所需操作

 vm.patientList(datacontext.patientNames());
 var patientsForClient = vm.patientList.remove(function (patient) { return patient.ClientId == vm.newCase().ClientId() });
 vm.patientList(patientsForClient);
vm.patientList(datacontext.patientNames.slice(0));