vue methods 里的方法改变不了data的值?

clipboard.png

值是上图这样的数组,比较特殊的是我要改变value这个字段。

改变方法如下:

clipboard.png

但是其他的字段可以改变,唯独value这个一直改变不了。推测可能和value这个关键字有关系。

阅读 14.9k
5 个回答

vue里直接修改数组某项的值,vue检测不到变化,不知道你说的修改不了是不是console.log打印出来的值没有变,还是页面上的数据没有变
https://cn.vuejs.org/v2/guide...

直接改变数据里面的值vue是检测不到的,除非用

  • push()
  • pop()
  • shift()
  • unshift()
  • splice()
  • sort()
  • reverse()

所以你这个可以用this.$set(this.tranList,this.tranList[index],item+1)

你目前发的代码没什么问题
至于检测数组没问题
forEach其实是:
this.tranlist[0].value += 1 Vuedata进行了递归处理你这样改的是对象 所以没问题
arr[0] = 1 改的是数组不行
arr[0].name = 1 改的是数组里的对象可以

直接修改值是检测不到变化的
需要用Vue的方法
上代码
import Vue from 'vue'

Vue.set(this.tranList, 1, {

value: 0,
name: '',
text: ''

})

你的数据是ajax获取的么?data初始化的时候tranList是不是设置的为null或者干脆就没有这个?如果在ajax之前没有定义这个属性,就不会监控这个属性,需要用this.$set('tranList',data)在ajax成功后赋值

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题