vue2:v-if和v-show的区别以及造成的影响
<div class="form-box-4" v-show="checkedList.includes('0505')">
<span class="form-box-4-label"
><span style="color: red">*</span>三失一偏类型:
</span>
<ta-form-item
field-decorator-id="threelostoneType"
:span="24"
:field-decorator-options="{
rules: [{ required: true, message: '请选择三失一偏类型' }],
}"
:disabled="isTypeDisabled"
>
<ta-checkbox-group
collection-type="ZAFK_THREELOSTONE_TYPE"
:value="threelostoneTypeList"
:disabled="isTypeDisabled"
/>
</ta-form-item>
</div>
看上面这一段代码,一个复选框,用div包裹,添加了一个v-if条件。就因为这个v-if,导致了接口返回的数据不能回显。
v-if和v-show都能控制元素是否显示,然而原理却完全不同。
v-if:如果为false就销毁元素,原来的那个dom对象就不存在了;如果为true,就创建一个新的dom对象。这导致了我在initForm中回显了数据,但是因为元素经历了一个销毁又被创建的过程,导致会显得数据消失了。
v-show:并不会创建或者销毁元素,而只是在页面上隐藏,无法看到,dom对象还是在的。但是也无法触发生命周期和钩子,因为对象一直都在。

浙公网安备 33010602011771号