美文网首页
【Vue】table绑定数据不更新

【Vue】table绑定数据不更新

作者: muxiyou | 来源:发表于2019-03-14 21:21 被阅读0次

问题:一开始初始化了tableData为空数组,在mounted中拿到后台返回数据重新赋值之后,视图不显示数据。

看了一下官方教程,果然里面有解决办法。

数组

由于 JavaScript 的限制,Vue 不能检测以下变动的数组:

  • 当你利用索引直接设置一个项时,例如:vm.items[indexOfItem] = newValue
  • 当你修改数组的长度时,例如:vm.items.length = newLength

举个例子

var vm = new Vue({
  data: {
    items: ['a', 'b', 'c']
  }
})
vm.items[1] = 'x' // 不是响应性的
vm.items.length = 2 // 不是响应性的

有两种方法可以解决这个问题和vm.items[indexOfItem] = newValue 相同的效果,同时也将触发状态更新:

// Vue.set
Vue.set(vm.items, indexOfItem, newValue)
// Array.prototype.splice
vm.items.splice(indexOfItem, 1, newValue)
//也可以使用 [`vm.$set`]实例方法,该方法是全局方法 `Vue.set` 的一个别名
vm.$set(vm.items, indexOfItem, newValue)
//解决第二类问题,可以使用 splice
vm.items.splice(newLength)

对象

还是由于 JavaScript 的限制,Vue 不能检测对象属性的添加或删除:

var vm = new Vue({
  data: {
    a: 1
  }
})
// `vm.a` 现在是响应式的

vm.b = 2
// `vm.b` 不是响应式的

对于已经创建的实例,Vue 不能动态添加根级别的响应式属性。但是,可以使用 Vue.set(object, key, value) 方法向嵌套对象添加响应式属性。例如,对于:

var vm = new Vue({
  data: {
    userProfile: {
      name: 'Anika'
    }
  }
})

可以添加一个新的 age 属性到嵌套的 userProfile 对象:

Vue.set(vm.userProfile, 'age', 27)
//或者
vm.$set(vm.userProfile, 'age', 27)

有时你可能需要为已有对象赋予多个新属性,比如使用 Object.assign() 或 _.extend()。在这种情况下,你应该用两个对象的属性创建一个新的对象。所以,如果你想添加新的响应式属性:

//bad
Object.assign(vm.userProfile, {
  age: 27,
  favoriteColor: 'Vue Green'
})
//good
vm.userProfile = Object.assign({}, vm.userProfile, {
  age: 27,
  favoriteColor: 'Vue Green'
})

相关文章

  • 【Vue】table绑定数据不更新

    问题:一开始初始化了tableData为空数组,在mounted中拿到后台返回数据重新赋值之后,视图不显示数据。 ...

  • Vue源码探究-数据绑定逻辑架构

    Vue源码探究-数据绑定逻辑架构 数据观察系统是Vue实现数据绑定、异步更新的核心模块,数据观察系统的实现也是Vu...

  • vue绑定数据不更新

  • 小程序实现双向绑定

    我们知道vue是双向绑定的前端框架,视图数据的更新,data就会更新;data更新,视图就会更新;这种双向绑定在小...

  • vue 双向绑定原理实现

    实现 mvvm 主要包含两个方面,数据变化更新视图,视图变化更新数据 Vue 数据双向绑定(即数据响应式),是利用...

  • Vue模板与交互

    1、模板 模板: {{msg}}数据更新模板也会变化 {{*msg}}数据只绑定一次,只适用于vue1.0,vue...

  • vue面试汇总

    1.vue数据双向绑定的原理 视图更新数据模型:通过事件对象改变数据模型;比如:input绑定输入事件监听修改da...

  • el-table 绑定的数据更新,但界面不更新

    通过修改绑定在 table 上面的 key 值,可以触发 table 的重新渲染

  • Vue 中的双向数据绑定

    双向绑定 单向数据流 双向绑定 or 单向数据流 Vue 是单向数据流,不是双向绑定 Vue 的双向绑定是语法糖 ...

  • vue 双向数据绑定

    Vue实现数据双向绑定的原理:Object.defineProperty()vue实现数据双向绑定主要是:采用数据...

网友评论

      本文标题:【Vue】table绑定数据不更新

      本文链接:https://www.haomeiwen.com/subject/pfitmqtx.html