vue 中this.$set 动态绑定数据的案例讲解


Posted in Vue.js onJanuary 29, 2021

感觉网上对this.$set的讲解乱糟糟的,我来总结一下对它单个数据、对象、数组、json数据的绑定.

话不多说直接上代码:

<template>
  <div>
    <!-- 单个数据 -->
    <button @click="text0a">text0</button>
    <p>text0: {{text0}}</p>
    <!-- 对象 -->
    <button @click="textObja">textObj</button>
    <p>textObj.text1: {{textObj.text1}}</p>
    <!-- 数组 -->
    <button @click="textArra">textArr</button>
    <p>textArr[1]: {{textArr[1]}}</p>
    <!-- json数据 -->
    <button @click="textJsona">textJson</button>
    <p>textJson[1].t5: {{textJson[1].t5}}</p>
  </div>
</template>
<script>
export default {
  data() {
    return{
      text0 : '',
      textObj: {},
      textArr: [],
      textJson:[
        {t0: ''},
        {t4: ''},
        {t7: ''},
      ]
    }
  },
  methods: {
    text0a: function () {
      let vm = this
      let text100 = 'efghjk'
      vm.$set(vm,'text0',text100) 
      //等效于 vm.$set(vm,'text0','efghjk')
    },
    textObja: function () {
      let vm = this
      let textObj100 = {
        text1: '123',
        text2: '456'
        }
      vm.$set(vm.textObj,'text1',textObj100.text1) 
      //此时等效于 vm.$set(vm,'textObj',textObj100)
    },
    textArra: function () {
      let vm = this
      let textArr200 = ['a1','a2','a3']
      vm.$set(vm,'textArr',textArr200)
    },
    textJsona: function () {
      let vm = this
      let textJson300 = [
        {t1: 't1',t2: 't2',t3: 't3'},
        {t4: 't4',t5: 't5',t6: 't6'},
        {t7: 't7',t8: 't8',t9: 't9'},
      ]
      vm.$set(vm.textJson[1],'t5',textJson300[1].t5) 
      //此时等效于 vm.$set(vm,'textJson',textJson300)
    }
  }
}
</script>
<style>
</style>

补充:Vue 使用$set动态给数据设置属性

在实际的开发过程中,给表单元素绑定model的时候,绑定的元素的属性是根据后台数据动态生成的。如果使用常规的赋值方式,是无法更新视图的

需要使用

this.$set(dataName,keyName,keyValue)
export default {
 data:{
  // 先定义一个空对象
  formObject:{},
  arrayList:[],
 },
 mounted() {
  this.initPage()
 },
 methods:{
  initPage(){
   this.$store.dispatch(namespace/callData).then(res=>{
    // 给数据设置key-value
    res.data.forEach(item=>{
     // ❗❗❗❗❗ this.formObject[item.name] = item.value // ❗❗❗❗ 这种方式是不能更新视图的
     this.$set(this.formObject, item.name, item.value) // ✅✅✅✅可以更新视图
    })
   })
   // 修改数组
    this.$store.dispatch(namespace/callData).then(res=>{
    // 给数据设置key-value
    this.$set(this.arrayList,0,(res.data)[0].id) ✅✅✅✅可以更新视图
   })
  }
 }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Vue.js 相关文章推荐
vue实现下载文件流完整前后端代码
Nov 17 Vue.js
vue 在单页面应用里使用二级套嵌路由
Dec 19 Vue.js
vue实现树状表格效果
Dec 29 Vue.js
vue 页面跳转的实现方式
Jan 12 Vue.js
vue element和nuxt的使用技巧分享
Jan 14 Vue.js
vue二选一tab栏切换新做法实现
Jan 19 Vue.js
vue实现简易计算器功能
Jan 20 Vue.js
vue+springboot实现登录验证码
May 27 Vue.js
详解Vue的列表渲染
Nov 20 Vue.js
vue项目支付功能代码详解
Feb 18 Vue.js
vue ref如何获取子组件属性值
Mar 31 Vue.js
Vue ECharts实现机舱座位选择展示功能
May 15 Vue.js
vue穿梭框实现上下移动
Jan 29 #Vue.js
vue使用transition组件动画效果的实例代码
Jan 28 #Vue.js
Vue ​v-model相关知识总结
Jan 28 #Vue.js
Vue 数据响应式相关总结
Jan 28 #Vue.js
vue.js实现点击图标放大离开时缩小的代码
Jan 27 #Vue.js
vscode自定义vue模板的实现
Jan 27 #Vue.js
vue+echarts实现中国地图流动效果(步骤详解)
Jan 27 #Vue.js
You might like
印尼林东PWN黄金曼特宁咖啡豆:怎么冲世界上最醇厚的咖啡冲煮教程
2021/03/03 冲泡冲煮
PHP插入排序实现代码
2013/04/04 PHP
图文详解PHP环境搭建教程
2016/07/16 PHP
简单的pgsql pdo php操作类实现代码
2016/08/25 PHP
Laravel多用户认证系统示例详解
2018/03/13 PHP
PHP代码重构方法漫谈
2018/04/17 PHP
PHP区块查询实现方法分析
2018/05/12 PHP
PHP中将一个字符串部分字符用星号*替代隐藏的实现代码
2019/09/08 PHP
setTimeout与setInterval在不同浏览器下的差异
2010/01/24 Javascript
jquery 选项卡效果 新手代码
2011/07/08 Javascript
ASP.NET jQuery 实例15 通过控件CustomValidator验证CheckBoxList
2012/02/03 Javascript
jquery获取特定name所有选中的checkbox,支持IE9标准模式
2013/03/18 Javascript
javascript数组去重3种方法的性能测试与比较
2013/03/26 Javascript
JavaScript改变HTML元素的样式改变CSS及元素属性
2013/11/12 Javascript
JS+CSS实现实用的单击输入框弹出选择框的方法
2015/02/28 Javascript
jquery实现具有收缩功能的垂直导航菜单
2016/02/16 Javascript
深入理解JavaScript中为什么string可以拥有方法
2016/05/24 Javascript
深入理解JavaScript函数参数(推荐)
2016/07/26 Javascript
JavaScript中的toString()和toLocaleString()方法的区别
2017/02/15 Javascript
jquery将标签元素的高设为屏幕的百分比
2017/04/19 jQuery
JS实现图片手风琴效果
2020/04/17 Javascript
vue mint-ui tabbar变组件使用
2018/05/04 Javascript
vue引用js文件的多种方式(推荐)
2018/05/17 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
2018/08/31 Javascript
[00:36]DOTA2上海特级锦标赛 Alliance战队宣传片
2016/03/04 DOTA
[47:02]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS paiN
2018/03/30 DOTA
Python获取任意xml节点值的方法
2015/05/05 Python
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
2018/03/15 Python
在django中使用apscheduler 执行计划任务的实现方法
2020/02/11 Python
Python基于类路径字符串获取静态属性
2020/03/12 Python
在pycharm创建scrapy项目的实现步骤
2020/12/01 Python
波兰家具和室内装饰品购物网站:Vivre
2018/04/10 全球购物
廉洁自律承诺书2016
2016/03/25 职场文书
python之np.argmax()及对axis=0或者1的理解
2021/06/02 Python
Go语言并发编程 sync.Once
2021/10/16 Golang
基于MySql验证的vsftpd虚拟用户
2021/11/07 MySQL