vue中$set的使用(结合在实际应用中遇到的坑)

本文解决了Vue项目中点击事件不执行的问题。作者通过检查数据同步情况,发现使用$set方法为已有对象添加属性可以更新视图。文章提供了具体代码示例。
  1. 最近在开发过程中遇到一个问题。在节点上面写点击事件时,点击事件不执行。代码如下:
<!-- 操作 -->
<el-table-column  label="操作">
  <template slot-scope="scope">
    <span class="poi icon-hover f16 mr20" @click='scope.row.edit=!scope.row.edit'>
      <svg-icon :icon-class="scope.row.edit?'icon_edit_outline':'icon_save'"></svg-icon>
    </span>
    <span class="poi icon-hover f16">
      <svg-icon icon-class="icon_delete"></svg-icon>
    </span>
  </template>
</el-table-column>
<!-- 操作 -->
复制代码
  1. 这里面的click事件一直不执行,一开始以为是点击事件没写对一直在找原因,后面突然想到会不会是数据不同步的原因的,因为edit字段是自己添加进去的字段,如下:
export default {
  name: 'strategic',
  data() {
    return {
      tableData: [{
        'pp_id': 4,
        'brand_name': '1414', 
        'project_name': '得意', 
        'description': '的u会回来会', 
        'publish_time': '2018-07-23',
        'is_used': 0 
      }]
    }
  },
  components: { },
  computed: {
  },
  created() {
    this.initTableData()
  },
  methods: {
    initTableData() {
      this.tableData.forEach(element => {
        element.edit = false
      })
    }
  }
}
复制代码
  1. 之后我直接在数据里面加上edit字段,发现是能够同步数据的,代码如下:
data() {
    return {
      tableData: [{
        'pp_id': 4,
        'brand_name': '1414',
        'project_name': '1414',
        'description': '7588888888',
        'publish_time': '2018-07-23',
        'is_used': 0,
        'edit': false
      }]
    }
 }
复制代码
  1. 原来是在我们使用vue进行开发,当生成vue示例后,再次给数据赋值时,有时候并不能自动更新到数据上去,这时候我们就要通过$set来解决这个问题,解决代码如下:
initTableData() {
  this.tableData.forEach(element => {
      this.$set(element, 'edit', false)
  })
}
复制代码

这段代码的功能是通过$set来添加edit字段。

小tip:

Vue.set()在methods中也可以写成this.$set(),我在这个项目中用的就是this.$set()

复制代码

至此就解决啦。

如有错误,欢迎各位批评指正。^-^

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值