gpt4 book ai didi

vue.js - Vue DOM 对计算属性没有反应

转载 作者:搜寻专家 更新时间:2023-10-30 22:30:54 25 4
gpt4 key购买 nike

如果计算属性的有效属性为 false,我有一个按钮设置为禁用。如果为真,则应启用该按钮并允许用户移至当前流程中的下一步。

我的 currentStep 计算属性正在根据当前步骤输入的更改进行完美更新,但按钮 :disabled="currentStep.valid"无法识别 currentStep.valid 正在发生的更改。

如果我在 vue-devtools 中单击当前组件 (addnewprogram) 来查看它的数据,按钮会正确显示!

在这里看到:http://recordit.co/XH6HX7JLhV

但是,如果不在开发工具中点击 addnewprogram,它就无法正常运行。

是否有我遗漏的观察注意事项?

可在此处找到此功能的代码:

<template>
<section class="newprogram">

<div class="newprogram--content">

<div class="newprogram--stepone" v-if="progression.current === 1">
<div class="content--left">
<a class="link uppercase">use existing program information<i class="fa fa-picture-o"></i></a>
<base-input v-for="input in currentStep.inputs"
:key="input.id"
:data="input"
v-model="input.value"></base-input>
</div>
<div class="content--right">
<!-- images -->
</div>
</div>

<div class="newprogram--steptwo" v-if="progression.current === 2">
<choice-progression :step="1"></choice-progression>
</div>

</div>
</div>

<!-- Consistent among all steps -->
<div class="container--bottomnav">
<div class="bottomnav--left">
<base-btn class="button-fluid"
:data="currentStep.btns[0]"></base-btn>
</div>
<div class="bottomnav--right">
<base-btn :data="currentStep.btns[1]"
:disabled="currentStepValid"></base-btn>
</div>
</div>
<!-- -->

</section>
</template>

<script>
import bottomNav from '../main/bottom-nav.vue';
import baseProgressionBarbell from '../base/base-progression-barbell.vue';
import baseInstruction from '../base/base-instruction.vue';
import baseInput from '../base/base-input.vue';
import baseBtn from '../base/base-btn.vue';
import choiceProgression from '../secondary-flows/choice-progression.vue';

export default {
name: 'addNewProgram',
components: {
bottomNav,
baseProgressionBarbell,
baseInstruction,
baseInput,
baseBtn,
choiceProgression
},
computed: {
progression () {
return this.$store.getters.getProgression('addnewprogram');
},
steps () {
return this.$store.getters.getSteps('addnewprogram');
},
currentStep () {
return this.steps[this.progression.current - 1];
},
currentStepValid () {
return this.currentStep.valid == false ? true : false;
},
stepOneValidation () {
this.steps[0].inputs.forEach(input => {
if (!input.value) {
return this.$set(this.steps[0], 'valid', false);
}
this.$set(this.steps[0], 'valid', true);
});
},
stepTwoChoices() {
return this.$store.getters.getChoices('addnewprogram', 1);
}
}
}
</script>

<style lang="sass" scoped>
@import '../../sass/_variables.sass'

.newprogram
display: flex
flex-direction: column

.container--newprogram
display: flex
flex-direction: column
height: 100%
padding: $s1

.newprogram--header
display: flex
justify-content: space-between
align-items: center

h1
padding: 0

.newprogram--content
display: flex
// justify-content: center
// align-items: center
height: 100%
padding-top: $s2
</style>

最佳答案

您正在更新计算项的成员。计算项目不可编辑。您需要一个 data 项,或者您需要将您的更改写入 $store 并让它们从那里刷新。

关于vue.js - Vue DOM 对计算属性没有反应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48083211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com