変更前は、DOM のレンダリングが繰り返されるため、バインディング ルールが無効になっていました。
修改前代码使用 computed 计算出渲染的DOM,影响rules事件
<el-form
ref="form"
inline
:model="billDetailCopy"
:rules="rules"
size="small"
label-position="right"
label-width="110px"
class="addInvoice-content-input">
<el-row>
<el-form-item v-for="(item,index) in filter(ordinaryList)" :key="index" :prop="item.key" :label="item.label" >
<el-form-item/>
<el-form/>
変更後は、ルールが混乱しないように、切り替えられた DOM が v-show を使用してページ上に表示されます。
修改后各渲染各的
<el-form
v-show="billDetailCopy.type === '增值税普通发票'"
ref="form1"
inline
:model="billDetailCopy"
:rules="rules"
size="small"
label-position="right"
label-width="110px"
class="addInvoice-content-input">
<el-row>
<el-form-item v-for="(item,index) in ordinaryList" :key="index" :prop="item.key" :label="item.label" >
<el-form-item/>
<el-form/>
フォームにバインドされたルールは、ルールによってバインドされたすべてのイベントをトリガーするために 2 つの要素に関連付けられます。
1. ルール内の <el-form-itembound prop="aaa"
2. v-model="aaa" によってバインドされた aaa はルール内にあります
参考リンク