vue 表单动态验证问题

32 阅读1分钟
el-form        ref="addCardForm"        :model="addCardForm"        :rules="addCardFormRules"        label-position="right"        label-width="150px"        class="memberForm"      >        <el-form-item label="会员卡类型">          <el-radio-group v-model="addCardForm.type" @change="cardTypeChange">            <el-radio :label="1">次卡</el-radio>            <el-radio :label="2">储值卡</el-radio>          </el-radio-group>        </el-form-item>        <template v-if="addCardForm.type === 1">          <el-form-item label="会员卡" prop="supplement_id">            <el-select              v-model="addCardForm.supplement_id"              placeholder="请选择会员卡"              @change="cardChange"              clearable              filterable            >              <el-option                v-for="item in cardList"                :key="item.shop_card_id"                :label="item.shop_card_name"                :value="item.shop_card_id"              ></el-option>            </el-select>          </el-form-item>        </template>
        <template v-else>          <el-form-item label="会员卡" prop="supplement_id" key="1">            <el-select              v-model="addCardForm.supplement_id"              placeholder="请选择会员卡"              @change="balanceChange"              clearable              filterable            >              <el-option                v-for="item in balanceList"                :key="item.sbc_id"                :label="item.balance_card_name"                :value="item.sbc_id"              ></el-option>            </el-select>          </el-form-item>          <el-form-item label="剩余本金" prop="current_balance" key="2">            <el-input v-model="addCardForm.current_balance" placeholder="¥0.00"></el-input>          </el-form-item>          <el-form-item label="剩余赠送金额" prop="current_dis_balance" key="3">            <el-input v-model="addCardForm.current_dis_balance" placeholder="¥0.00"></el-input>          </el-form-item>        </template>
<el-form>

实际上出现这个问题是因为vue的diff算法,在diff算法中会尽可能的复用组件,所以此处看上根据formData.xxx进行切换,但实际上diff算法会复用组件,并没有重新渲染,所以需要配合key属性。

 <el-form-item label="剩余本金" prop="current_balance" key="2">