账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    vee-validate多父组件、子组件、子孙组件校验问题
    102
    0
    <template>
        <div>
            <basic-info v-if="pBasicInfoVO.isShow"></basic-info>
            <sku-info v-if="pSkuInfoListVO.isShow"></sku-info>
            <delivery-info v-if="pDeliveryInfoVO.isShow"></delivery-info>
            <ware-house v-if="pWarehouseInfoVO.isShow"></ware-house>
            <description-info v-if="pDescriptionsInfoVO.isShow"></description-info>
            <account-info v-if="pManAccountVO.isShow"></account-info>
            <ordiary-info v-if="pOrdinaryAttrInfoVO.isShow"></ordiary-info>
            <business-relate v-if="pBusinessRelateInfoVO.isShow"></business-relate>
            <div class="footer">
                <a href="javascript:;" class="btn btn-success" @click="saveWarePublishVO">Save</a>
                <a href="javascript:;" class="btn btn-cancel">Cancel</a>
            </div>
        </div>
    </template>
    

    有以上导航页面,点击save的时候,取反isValidate:

    saveWarePublishVO() {
            this.setIsValidate(!this.isValidate)
            let isBasicInfoVOValid = this.basicInfoVO.validateFlag
            let isSkuInfoVOValid = this.skuInfoListVO.validateFlag
        
            this.$store.dispatch(type.SAVE_WARE_INFO)
        }
     

    然后每个组件监听isValidate字段,设置各个模块的有效标志位:

    watch: {
        isValidate() {
            this.$validator.validateAll().then((flag) => {
                if (!isRepeate && flag) {
                    this.setBasicInfoValidateFlag(flag)
                }
            })
        }
    }

    但是由于vee-validate方法中的validateAll是异步执行的,点击save的时候是同步执行的,导致第一次点击save不会触发watch,请问如何解决这个问题?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • ﹍Mr.鹿℡ 普通会员 1楼

      在 Vue.js 中,我们需要使用 v-ifv-for 标签来实现多个父组件、子组件和子孙组件的校验。这是一个简单的例子:

      ```html

      ```

      在这个例子中,我们创建了四个子组件(child1child2child3child4)。我们还创建了一个父组件(parent)和一个方法(validate)来校验这些子组件。

      当一个子组件的 title 字段被验证时,我们调用 validate 方法来验证其他子组件的 title 字段。如果我们发现某个子组件的 title 字段被错误地校验了,我们就回滚到验证前,即停止校验其他子组件的 title 字段。

      如果我们发现所有子组件的 title 字段都被正确地校验了,我们就继续校验其他子组件的 title 字段。

    • 染指流年 普通会员 2楼

      在 Vue.js 中,我们需要使用 v-ifv-for 标签来实现多个父组件、子组件和子孙组件的校验。这是一个简单的例子:

      ```html

      ```

      在这个例子中,我们创建了四个子组件(child1child2child3child4)。我们还创建了一个父组件(parent)和一个方法(validate)来校验这些子组件。

      当一个子组件的 title 字段被验证时,我们调用 validate 方法来验证其他子组件的 title 字段。如果我们发现某个子组件的 title 字段被错误地校验了,我们就回滚到验证前,即停止校验其他子组件的 title 字段。

      如果我们发现所有子组件的 title 字段都被正确地校验了,我们就继续校验其他子组件的 title 字段。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部