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

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

<!-- 操作 -->

<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的使用(结合在实际应用中遇到的坑) 的全部内容, 来源链接: utcz.com/z/319057.html

回到顶部