我正在进行投票申请。我想在点击投票按钮后禁用该按钮。如何禁用按钮。
模板
<v-btn
v-for="choice in data.choices"
@click="doVote(choice.id)"
color="success"
v-bind:key="choice.id">
votes: {{ choice.votes }}
</v-btn>
脚本
data () {
return {
vote: null,
questions: [],
}
},
methods: {
fetchData () {
this.$request.questions.list().then(res => {
this.questions = res.data.results
})
},
// add votes
doVote (vote) {
if (!vote) {
return
}
this.$request.questions.vote(vote).then(res => {
this.fetchData()
})
},
mounted () {
this.fetchData()
},
答案 0 :(得分:4)
v-btn
有disabled
property你可以使用;一种方法是创建一个clicked
字段来记录您点击的所有按钮,并检查特定按钮是否在点击的数组中:
<v-btn
:disabled="clicked.includes(choice.id)"
v-for="choice in data.choices"
@click="doVote(choice.id)"
color="success"
v-bind:key="choice.id">
votes: {{ choice.votes }}
</v-btn>
在data
中,将clicked
初始化为空数组:
data () {
return {
vote: null,
questions: [],
clicked: []
}
}
然后在doVote
方法中,在事件触发时将choice.id
推送到clicked
数组:
doVote (vote) {
this.clicked.push(vote)
if (!vote) {
return
}
this.$request.questions.vote(vote).then(res => {
this.fetchData()
})
}
答案 1 :(得分:1)
最简单的方法是在按下投票按钮时设置一个变量,然后将其绑定到按钮的“ disabled”属性:
v-bind:disabled =“ hasVoted”
答案 2 :(得分:0)
您可以添加另一个变量(在这种情况下为votes
),该变量将记录投票,然后您可以使用它来确定是否应禁用该按钮(请参阅votes.indexOf(choice.id) !== -1
)。
模板:
<v-btn
:disabled="votes.indexOf(choice.id) !== -1"
v-for="choice in data.choices"
@click="doVote(choice.id)"
color="success"
v-bind:key="choice.id">
votes: {{ choice.votes }}
</v-btn>
脚本
data () {
return {
votes: [],
vote: null,
questions: [],
}
},
methods: {
fetchData () {
this.$request.questions.list().then(res => {
this.questions = res.data.results
})
},
// add votes
doVote (vote) {
if (!vote) {
return
}
this.$request.questions.vote(vote).then(res => {
this.fetchData()
this.votes.push(vote);
})
},
mounted () {
this.fetchData()
},
答案 3 :(得分:0)
我偶然发现了一个相同的问题,我想分享一下如何解决我的问题,这将再次包括创建另一个数组来记录您的点击次数,如之前的答案中所述,然后使用Array.prototype.some() method确定哪个通过绑定v-btn组件的禁用道具来禁用按钮,如下所示:
<template>
<v-btn
:disabled="votes.some(vote => vote.id === choice.id)"
v-for="choice in data.choices"
@click="doVote(choice.id)"
color="success"
v-bind:key="choice.id">
votes: {{ choice.votes }}
</v-btn>
</template>
我必须在我找到解决方案的SO question上参考迈克尔的回答