复制 2 个可观察数组,然后进行比较
copying 2 observable arrays and then comparing
>我已经在我的代码中声明了 2 个可观察数组,如下所示
self.versionDataByProduct = ko.observableArray([]);
self.copiedSavedVersionData = ko.observableArray([]);
当我保存数据时,我将self.versionDataByProduct中的所有值复制到self.copiedSavedVersionData中,如下所示
self.copiedSavedVersionData(self.versionDataByProduct());
然后我尝试在按钮事件上比较 2 个可观察数组,称为 compareArray,如下所示
this.compareArray = function () {
debugger;
var results = [];
var differences = ko.utils.compareArrays(self.versionDataByProduct(), self.copiedSavedVersionData());
ko.utils.arrayForEach(differences, function (difference) {
if (difference.status === "deleted") {
results.push(difference.value);
}
});
return results;
};
但这行不通。因为在我将一个可观察数组复制到另一个可观察数组并在可观察数组中进行一些修改后,它会自动更新其他数组。我不想这样。我希望我的可观察数组self.copiedSavedVersionData在复制后保持原样。我怎样才能实现它?如果我做了任何更改,我只是在跟踪它。如果数组被更改,那么我将在我的代码中启用按钮。目前我不知道如何进行脏跟踪,所以找到了这个替代方案,但不起作用。请帮忙。
您可以使用slice
函数来实现此目的:
self.copiedSavedVersionData(self.versionDataByProduct().slice(0));
在这种情况下,ko 将克隆数组。
尝试:
ko.utils.arrayPushAll(self.copiedSavedVersionData, self.versionDataByProduct());
相关文章:
- 如何放置ÅÄ和#214;在javascript数组中,然后将其与html文本进行比较
- 如何比较两个数组,然后返回差异的索引
- MongoDB:将Days字段添加到DB中的Date Type字段中,然后与当前日期进行比较
- jQuery或javascript可以从文本字符串中确定日期,然后比较两个日期
- 动态创建一个数组,然后遍历另一个数组以比较数据是否存在
- 检索两个列表,对值进行排序和比较,然后显示所有结果
- 比较 URL 字符串和菜单字符串,然后使用 jQuery 添加类
- 处理异常:读取键并进行比较,然后输出,否则出错
- 将一个电话号码数组转换为单个号码,然后用javascript比较这些号码
- 使用数组循环将值与另一个电子表格进行比较,然后写入新值
- HTML将参数传递给javascript函数,然后javascript函数进行日期比较,然后javascript返回以H
- 如何将数组推入关联数组,然后检索值进行比较
- 使用& # 39;这个# 39;选择属性,然后与选定的HTML属性进行比较
- 找到HTML日期,然后比较当前数据
- JSON与Array的比较,有没有一种方法可以将一个转换为另一个,然后再转换回来
- 将变量保存在本地存储中,然后进行比较
- 如何比较,然后在必要时在AJAX中更新
- 循环通过每个输入,然后再次循环并进行比较
- Jsonpath:添加2个元素,然后比较
- 检测屏幕分辨率,然后比较