配合 Vue 使用

Obj-Validation 提供了一个 mixin 模块让 Vue 的 component 可以很方便的使用它。Vue 组件可在组件 option 中声明 validate 项来配置 mixin 模块的行为。在 Vue 的组件代码中,也可以直接调用验证器实例的方法来完成数据验证。另外,mxin 模块声明了 validateErrorvalidateState 这两个数据对象用于保存验证错误消息和验证状态,它们可以很方便的引用以及在组件模板中绑定显示。

import ObjValidation from  'obj-validation'

new Vue({
  el: '#ObjValidationDemo',
  mixins: [ObjValidation.vueMixin],
  validate: {
    // 验证规则
    rules: {
        name: {
            length:  28,
            pattern: /.*\..*/
        },
        age: {
            type: Number,
            max: 120
        }
    },
    // 要验证的对象,可以通过 vm.$get('user') 获取
    target: 'user',
    // 可选项,只监听 target 的指定成员
    targetProps: ['age', 'name'],
    // 可选项,提供字段标签,方便展示给用户(字段名不容易理解)
    label: {
      name: '用户名',
      age: '年龄'
    }
  },
  data: {
    user: {
      name: '',
      age: 1
    }
  },
  computed: {
    isInvalid () {
      let state = this.validateState
      return Object.keys(state).some(function (prop) {
        return state[prop] === false
      })
    }
  },
  methods: {
    submit: () {
      this.$validator.validate(function (isValid){
        if(isValid) {
          // submit form
        }
      })
    }
})
<div id="ObjValidationDemo">
  <form id="validateForm" v-cloak @submit.prevent="submit">
    <p>
      <label for="name">Name</label>
      <input type="text" v-model="user.name">
      <span class="help-block">{{ validateError.name }}</span>
    </p>
    <p>
      <label for="name">Age</label>
      <input type="text" v-model="user.age">
      <span class="help-block">{{ validateError.age }}</span>
    </p>
    <p>
      <button :disabled="isInValid">Submit</button>
    </p>
  </form>
</div>

results matching ""

    No results matching ""