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)
 })
}

至此就解决啦。

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

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容