首页 > 编程 > JavaScript > 正文

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

2019-11-19 13:31:25
字体:
来源:转载
供稿:网友

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

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

至此就解决啦。

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表