vue.js - vue官方示例这个步骤是不是多余的?
本文介绍了vue.js - vue官方示例这个步骤是不是多余的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
filteredData: function () {
var sortKey = this.sortKey
var filterKey = this.filterKey && this.filterKey.toLowerCase()
var order = this.sortOrders[sortKey] || 1
var data = this.data
if (filterKey) {
data = data.filter(function (row) {
return Object.keys(row).some(function (key) {
return String(row[key]).toLowerCase().indexOf(filterKey) > -1
})
})
}
if (sortKey) {
data = data.slice().sort(function (a, b) {
a = a[sortKey]
b = b[sortKey]
return (a === b ? 0 : a > b ? 1 : -1) * order
})
}
return data
}
}
data=data.slice()这里有必要吗?data本来就是数组啊,还是有其他的什么意义?
解决方案
sort 对数组进行的是原位排序,也就是说
var b = a.sort()
b === a // true
这种情况下,Vue 是无法完成对排序动作的响应式跟踪的。因此我们必须用一个新数组替换原来的数组以使得 Vue 可以响应式的更新界面,因此我们使用 slice() 来浅复制这个数组以达到这个效果。
这篇关于vue.js - vue官方示例这个步骤是不是多余的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文