有个需求,用recycle-view做的长列表,加载完数据后,想通过关键词筛选想要的数据。
通过RecycleContext.splice()方法,可以筛选出数据,但是无法恢复原来数据,因为splice()方法改变了原数组。
pickValue: function (e) {
const data = e.detail;
// 拷贝原数组
const countrys = JSON.parse(JSON.stringify(this.pureData.countrys));
let len = 0;
// 输入的长度 > 0,进行模糊查询
if (data.cursor > 0) {
const newData = countrys.filter(item => {
if (item.desc.indexOf(data.value) > -1) {
return item
};
return newData
});
len = newData.length;
// 将查询结果通过RecycleContext.splice()方法从新渲染
this.ctx.splice(0, countrys.length, newData, (res) => {
console.log("res => ", res);
})
} else if (data.cursor === 0) {
// 如果删除了输入关键词,就将结果恢复到原始结果
console.log("countrys => ", this.pureData.countrys);
this.ctx.splice(0, len, countrys, (res) => {
console.log("res => ", res);
})
}
},