如何让按钮在单击时更改其颜色和名称,并在 vuetify 中再次单击时返回原始按钮
how do I make a button change its color and name when it is clicked and back to the original when it is clicked again in vuetify
<v-btn
@click="sendState"
:color="accountFeaturesState(accountFeatures.equityTrading)"
>
{{ accountFeatures.equityTrading }}
</v-btn>
export default {
data: function () {
return {
state: [{ enabled: "Enabled", disabled: "Disabled" }],
accountFeatures: {
equityTrading: this.state,
},
};
},
methods: {
accountFeaturesState(color) {
return color === this.state[this.enabled]
? "green"
: color === this.state[this.disabled]
? "red"
: "grey";
},
sendState() {
this.state = "Disabled"
// if (state === this.state.enabled) {
// state === this.state.disabled;
// } else state === this.state.enabled;
},
},
};
</script>
我尝试了几种不同的方法来解决这个问题,然后尝试从仅更改一次开始,这是上面现在未注释的内容,但即使这样也不能正常工作。顶部是 html 代码,底部是脚本。我希望按钮在启用时为绿色,在禁用时为红色,并在每次单击时在两者之间切换。我没有使用 Disabled 道具,只是将单词 disabled 设为红色。任何帮助将不胜感激。
您可以使用布尔值控制此行为。只需在单击按钮时切换值,然后 return 基于该值的颜色或标题的正确值。
您还可以使用计算 属性 来 returning 这些值。
运行 下面的代码并检查结果:
Vue.config.productionTip = false;
Vue.config.devtools = false
new Vue({
el: '#app',
vuetify: new Vuetify(),
data() {
return {
isDisabled: false,
};
},
})
<link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/@mdi/font@4.x/css/materialdesignicons.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/vue@2.x/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.js"></script>
<div id="app">
<v-app>
<v-btn :color="isDisabled ? 'red' : 'green'" @click="isDisabled = !isDisabled">{{ isDisabled ? 'disabled' : 'activated' }}</v-btn>
</v-app>
</div>
<v-btn
@click="sendState"
:color="accountFeaturesState(accountFeatures.equityTrading)"
>
{{ accountFeatures.equityTrading }}
</v-btn>
export default {
data: function () {
return {
state: [{ enabled: "Enabled", disabled: "Disabled" }],
accountFeatures: {
equityTrading: this.state,
},
};
},
methods: {
accountFeaturesState(color) {
return color === this.state[this.enabled]
? "green"
: color === this.state[this.disabled]
? "red"
: "grey";
},
sendState() {
this.state = "Disabled"
// if (state === this.state.enabled) {
// state === this.state.disabled;
// } else state === this.state.enabled;
},
},
};
</script>
我尝试了几种不同的方法来解决这个问题,然后尝试从仅更改一次开始,这是上面现在未注释的内容,但即使这样也不能正常工作。顶部是 html 代码,底部是脚本。我希望按钮在启用时为绿色,在禁用时为红色,并在每次单击时在两者之间切换。我没有使用 Disabled 道具,只是将单词 disabled 设为红色。任何帮助将不胜感激。
您可以使用布尔值控制此行为。只需在单击按钮时切换值,然后 return 基于该值的颜色或标题的正确值。
您还可以使用计算 属性 来 returning 这些值。
运行 下面的代码并检查结果:
Vue.config.productionTip = false;
Vue.config.devtools = false
new Vue({
el: '#app',
vuetify: new Vuetify(),
data() {
return {
isDisabled: false,
};
},
})
<link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/@mdi/font@4.x/css/materialdesignicons.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/vue@2.x/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.js"></script>
<div id="app">
<v-app>
<v-btn :color="isDisabled ? 'red' : 'green'" @click="isDisabled = !isDisabled">{{ isDisabled ? 'disabled' : 'activated' }}</v-btn>
</v-app>
</div>