JavaScript

超轻量级php框架startmvc

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

更新时间:2020-07-16 01:54:01 作者:startmvc
最近在开发过程中遇到一个问题。在节点上面写点击事件时,点击事件不执行。代码如下:

最近在开发过程中遇到一个问题。在节点上面写点击事件时,点击事件不执行。代码如下:


<!-- 操作 -->
 <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>
 <!-- 操作 -->

这里面的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
 })
 }
 }
}

之后我直接在数据里面加上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
 }]
 }
 } 

原来是在我们使用vue进行开发,当生成vue示例后,再次给数据赋值时,有时候并不能自动更新到数据上去,这时候我们就要通过$set来解决这个问题,解决代码如下:


initTableData() {
 this.tableData.forEach(element => {
 this.$set(element, 'edit', false)
 })
}

至此就解决啦。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

vue $set使用 vue set 使用