项目中动态生成了多个按钮,但是v-loading设置了同一个属性,导致提交的时候,多个按钮都一起加载loading效果。
错误写法:
<el-button style="margin-left: 10px" type="primary" v-for="(item, index) in buttons" :key="index" @click="submitTask(item)"
:loading="loading">{{ item.name }}
</el-button>
为了使得每个按钮有单独的loading效果,需要为每个按钮单独设置属性:
<el-button style="margin-left: 10px" type="primary" v-for="(item, index) in buttons" :key="index" @click="submit(item)"
:loading="item.isLoading">{{ item.name }}
</el-button>
在click事件中,动态的设置属性值:
submit(){
...
this.$set(item, 'isLoading', true)
...
this.$set(item, 'isLoading', false)
}