Angenommen, ich habe Folgendes:
<v-btn v-for="action in actions" :key="action.icon" :disabled="action.disabled" icon @click="action.click(item.id)"> <v-icon>{{ action.icon }}</v-icon> </v-btn>
Die Aktion ist wie folgt definiert:
export default { props: { rowEditingDisabled: Boolean, }, data() { return { actions: [ {icon: 'mdi-pencil', disabled: this.rowEditingDisabled, click: this.edit}, ], }; }, };
Wie kann ich die Eigenschaft „disabled“ aktualisieren, wenn die Komponenteneigenschaft „rowEditingDisabled“ aktualisiert wird?
Hier ist ein Clip, der zeigt, was ich meine:
Vue.component('child', { template: ` <div> <v-btn :disabled="rowEditingDisabled">This works!</v-btn> <v-btn v-for="action in actions" :key="action.icon" :disabled="action.disabled" icon @click="action.click(item.id)"> <v-icon>{{ action.icon }}</v-icon> </v-btn> </div>`, props: { rowEditingDisabled: Boolean, }, data() { return { actions: [ {icon: 'mdi-pencil', disabled: this.rowEditingDisabled, click: this.edit}, ], }; }, }) new Vue({ el: '#app', vuetify: new Vuetify(), data() { return { isDisabled: true }; }, created() { setInterval(() => { this.isDisabled = !this.isDisabled; }, 1000); }, })
<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@6.x/css/materialdesignicons.min.css" rel="stylesheet"> <link href="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.min.css" rel="stylesheet"> <div id="app"> <v-app> <v-main> <v-container> <child :row-editing-disabled="isDisabled"></child> </v-container> </v-main> </v-app> </div> <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>
Es funktioniert, wenn ich nur die Requisite verwende, aber wenn ich sie in ein Array einfüge, funktioniert es nicht mehr.
请确保您观察道具中的更改,如下所示: