我正在使用带有knockout.js的javascript,我有2个数组:
self.timesheets = ko.observableArray();
self.selectedTimesheets = ko.observableArray();
我按如下方式加载时间表数据:
$.ajax({
url: '/api/Invoice/GetPendingTimesheets',
type: 'GET',
success: function (timesheetData) {
self.timesheets(timesheetData);
}
});
时间表的定义如下:
public class Timesheet
{
public int Id { get; set; }
public DateTime WeekStart { get; set; }
}
selectedTimesheets数组会跟踪已选择的复选框
我想要做的是删除self.timeslectedheets中的self.timesheets中的元素,我有一个心理障碍,想出如何做到这一点:
我知道应该有像
这样的东西self.timesheets.remove(function (el) {
// ????
});
但我真的想不出怎么做。
答案 0 :(得分:1)
以编程方式,您希望遍历self.timesheets数组并将每个项目的id与self.selectedtimesheets中的ID进行比较。如果ids匹配,您想要从self.timesheets中删除该项目。
或者将两个阵列中的所有项目推送到一个新阵列中并删除重复项。
但是因为你正在使用Knockout,所以如果运行compareArrays实用程序函数:
var differences = ko.utils.compareArrays(self.timesheets, self.selectedtimesheets);
差异现在只是不同值的数组。