IView使用中遇到的一些坑


最近开发中使用iView遇到了一个问题,困扰了很久。使用了iView的Modal组件和Form组件。

问题总结

iView的Modal组件中暴露两个事件——点击确定和取消的回调。@on-ok@on-cancel。如果Modal中嵌入表单并且表单需要校验的话,不可以使用Modal提供的on-ok方法。需要自己加一个Button单独添加事件来处理。

<Modal 
  title="修改名称" 
  v-model="setAliasModal" 
  :mask-closable="false"
  @on-cancel="resetSetAlias">
  <Form ref="setalias" :model="setAliasData" :label-width="80" :rules="aliasrules">
    <FormItem label="方法名称" prop="aliasName">
      <Input v-model="setAliasData.aliasName" :maxlength="25" placeholder="请输入新的方法名(最长不超过25)"></Input>
    </FormItem>
  </Form>

  <template slot="footer">
    <Button type="text" @click="resetSetAlias">取消</Button>
    <Button type="primary" @click="setAliasHandleSubmit">保存</Button>
  </template>
</Modal>

需求描述

需求是Modal组件中嵌套Form组件,需要进行表单规则校验,如果校验通过,则关闭Modal进行后续逻辑;如果校验不通过,那么Modal不能关闭,提示用户规则校验不通过。

Form表单提供了 this.$refs["xxx"].validate 方法来校验规则。

如果使用Modal提供的@on-ok事件来处理的话,不管校验是否通过,都会默认关闭Modal的。

所以处理的方法,是不要使用Modal提供的@on-ok方法,自己写两个Button来分别处理取消和确定的事件。