按钮绑定禁用值变了,但是页面禁用效果不生效

element+Vue 值变了,但是页面没有改变,不知道是什么问题
需求:
el-table每行有编辑的操作按钮,点击编辑按钮打开编辑表单el-dialog,在提交编辑信息后关闭弹窗并将el-table操作行的编辑按钮单行动态禁用15秒
我写的代码如下:

<el-table :data="tableData">
  <el-table-column  label="操作" min-width="140">
    <template slot-scope="scope">
      <el-button v-if="scope.row.isEdit=='0'" 
                 type="text"      
                 @click="handleClick(scope.row,scope.$index)"  
                 :disabled="scope.row.disable">编辑</el-button>
    </template>
  </el-table-column>
</el-table>  

<el-dialog title="编辑" :visible.sync="editForm" width="500px" append-to-body>
  <div></div>
  <div slot="footer" class="dialog-footer">
    <el-button type="primary" @click="submit">确 定</el-button>
    <el-button @click="editForm=fasle">取 消</el-button>
  </div>
</el-dialog>
<script>
 export default {
  data(){
    return{
       tableData:[],
       editForm:false,
       activeRow:{},
       activeIndex:''
    }
  },
  created(){
    this.getList()
  },
  methods:{
    getList(){
      //tableData的数据是从接口获取的,我想对禁用按钮做单行动态处理,所以就定义了单行的disable属性
      this.tableData.forEach(item=>{ return item.disable=false})
    },
    handleClick(row,index){
      this.activeRow=row
      this.activeIndex=index
      this.editForm=true
    },
    submit(){
      this.editForm=false
      this.$set(this.tableData[this.activeIndex],'disable',true)
      setTimeout(()=>{
        this.$set(this.tableData[this.activeIndex],'disable',false)
      },15000)
    }
  }
}
</script>

问题:this.tableData.forEach遍历进去的disable有值且$set时改变了,但是页面禁用效果不生效

可以加一个this.$forceUpdate() 强制更新 试试

  • 请看👉 :Vue使用ElementUI的el-table,处理合计行问题(el-table树型数据同样适用)
  • 除此之外, 这篇博客: Vue使用ElementUI的el-table组件,处理合计行问题中的 一、合计行,在需要的时候调用显示 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • ElementUI在使用el-table做合计行时,官方文档说明如下:
    参考地址:https://element.eleme.cn/#/zh-CN/component/table

    将show-summary设置为true就会在表格尾部展示合计行。默认情况下,对于合计行,第一列不进行数据求合操作,而是显示「合计」二字(可通过sum-text配置),其余列会将本列所有数值进行求合操作,并显示出来。当然,你也可以定义自己的合计逻辑。使用summary-method并传入一个方法,返回一个数组,这个数组中的各项就会显示在合计行的各列中,具体可以参考本例中的第二个表格。