vue.js - vue官方示例这个步骤是不是多余的?

查看:70
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆