返回顶部
首页 > 资讯 > 前端开发 > JavaScript >antdvuev-decorator的取值与赋值问题
  • 376
分享到

antdvuev-decorator的取值与赋值问题

antdvuev-decoratorv-decorator的取值v-decorator的赋值 2023-05-17 08:05:40 376人浏览 八月长安
摘要

目录antd Vue v-decorator的取值与赋值ant design vue之v-decorator问题1.在template中直接使用2.在script中设置校验规则3.

antd vue v-decorator的取值与赋值

v-decorator 是 Ant Design 的控件验证属性。

经过 getFieldDecorator 或 v-decorator 包装的控件,表单控件会自动添加 value(或 valuePropName 指定的其他属性) onChange(或 trigger 指定的其他属性),数据同步将被 FORM 接管

这会导致以下结果:

  • 你不再需要也不应该用 onChange 来做同步,但还是可以继续监听 onChange 等事件。
  • 你不能用控件的 value defaultValue 等属性来设置表单域的值,默认值可以用 getFieldDecorator 或 v-decorator 里的 initialValue。
  • 你不应该用 v-model,可以使用 this.form.setFieldsValue 来动态改变表单值。

定义form:

<template>
  <div class="main">
    <a-form
      id="formLogin"
      class="user-layout-login"
      ref="formLogin"
      :form="form"
      @submit="handleSubmit"
    >
        <a-form-item>
            <a-input
              size="large"
              type="text"
              placeholder="账户: "
              v-decorator="[
                'username',
                {initialValue:'',rules: [{ required: true, message: '请输入帐户名或邮箱地址' }, { validator: handleUsernameOrEmail }], validateTrigger: 'change'}
              ]"
            >
              <a-icon slot="prefix" type="user" :style="{ color: 'rgba(0,0,0,.25)' }" />
            </a-input>
          </a-form-item>
    </a-form>
 </div>
</template>
 
<script>
...
export default {
  ...
  data () {
    return {
      ...
      form: this.$form.createForm(this),
    }
  },
  created () {
    
  },
  ...
}
</script>

v-decorator 取值:

this.form.validateFields((err, values) => {
  // 这里做逻辑处理
  console.log(values) // { username: '' }
})

v-decorator 赋值:

this.form.setFieldsValue({
  username: '设置值'
})

清空表单数据:

this.form.resetFields

ant design vue之v-decorator问题

1.在template中直接使用

required: true 设置必填, trigger: 'blur' 设置失去焦点触发校验

<a-input
  v-decorator="['name', { rules: [{ required: true, message: '请输入账号!'}],trigger: 'blur' }]" 
 />

2.在script中设置校验规则

template 部分

 <a-input
   v-decorator="['passWord', validatorRules.password]"
 />

script 部分

   data(){
    return {
       form: this.$form.createForm(this),
       validatorRules: {
          password : {//name与v-decorator中属性对应
            initialValue: 123456,//初始值
            rules: [
              { required: true, message: '请输入密码!'},//此处开启校验必填
              { min: 5, message: '长度不少于 5 个字符'}, // 长度校验
              { validator: this.validatePassword},//校验规则函数,
            ],
            trigger: 'blur' // 触发方式
          },
        },
    }
  },
   methods: {
      validatePassword(rule, value, callback) {
      
      }
  }

3. 完整代码

<template>
  <div class="login">
    <a-form :form="form" :label-col="{ span: 5 }" :wrapper-col="{ span: 12 }" @submit="handleSubmit">
    <a-form-item label="name">
      <!-- 直接写检验规则 -->
      <a-input
         v-decorator="['name', { rules: [{ required: true, message: '请输入账号!'}],trigger: 'blur' }]" 
      />
    </a-form-item>
    <a-form-item label="password">
      <!-- 在script 里面定义更复杂的检验规则,  -->
      <a-input
        v-decorator="['password', validatorRules.password]"
      />
    </a-form-item>
    <a-form-item :wrapper-col="{ span: 12, offset: 5 }">
      <a-button type="primary" html-type="submit">
        Login
      </a-button>
    </a-form-item>
  </a-form>
  </div>
</template>

<script>
export default {
  name: 'login',
  data(){
    return {
       form: this.$form.createForm(this),
       validatorRules: {
          password : {//name与v-decorator中属性对应
            initialValue: 123456,//初始值
            rules: [
              { required: true, message: '请输入密码!'},//此处开启校验必填
              { min: 5, message: '长度不少于 5 个字符'}, // 长度校验
              { validator: this.validatePassword},//校验规则函数,
            ],
            trigger: 'blur' // 触发方式
          },
        },
    }
  },
  created(){
    // this.$nextTick(() => {
    //     this.form.setFieldsValue({name:'yyy',password: 123});
    //   })
  },
  mounted(){
    this.form.setFieldsValue({name:'yyy',password: 123});
  },
  methods: {
     handleSubmit(e) {
      e.preventDefault();
      this.form.validateFields((err, values) => {
        if (!err) {
          console.log('Received values of form: ', values);
        }
      });
    },
    validatePassword(rule, value, callback) {
      
    }
  }
}
</script>

注意:

确保使用 this.form.setFieldsValue({name:'yyy',password: 123}) 设置值

或者 this.form.validateFields((err, values) => { }); 获取值

之前

已经 this.$form.createForm(this)

如果在钩子函数里面使用 setFieldsValue 报类似错误

warning.js?d96e:34 Warning: You cannot set a form field before rendering a field associated with the value. You can use `getFieldDecorator(id, options)` instead `v-decorator="[id, options]"` to reGISter it before render.

可以这样试下

this.$nextTick(() => {
  this.form.setFieldsValue({name:'yyy',password: 123});
})

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。 

--结束END--

本文标题: antdvuev-decorator的取值与赋值问题

本文链接: https://lsjlt.com/news/210837.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • antdvuev-decorator的取值与赋值问题
    目录antd vue v-decorator的取值与赋值ant design vue之v-decorator问题1.在template中直接使用2.在script中设置校验规则3. ...
    99+
    2023-05-17
    antd vue v-decorator v-decorator的取值 v-decorator的赋值
  • vue中的传值及赋值问题
    目录vue的传值及赋值先看一下场景解决方法vue的赋值小技巧严谨代码undefined判断vue的传值及赋值 作为Vue非资深的学习者,在工作中使用vue的时候还是遇见的很多所谓的坑...
    99+
    2024-04-02
  • 解决使用mybatis取值,字段赋值错误的问题
    目录使用mybatis取值,字段赋值错误mybatis映射赋值失败错误输出错误造成原因解决方法使用mybatis取值,字段赋值错误  我在读取数据库的表信息时,出现了不同字...
    99+
    2024-04-02
  • chrome监听cookie变化与赋值问题
    下面代码给大家介绍了chrome监听cookie变化,代码如下所示: chrome.cookies.onChanged.addListener(function(changeI...
    99+
    2024-04-02
  • python for循环赋值问题
    背景 写代码的时候,你会发现你的代码越写越多。 然而,功能需要也越来越多,然后你的冗余代码就多得不能再多了~~~怎么办,我太难了。 那就寻求一些高级写法,一般的高级写法都是尽可能地短...
    99+
    2024-04-02
  • C#List的赋值问题的解决
    目录问题描述原因分析:基础概念:本地测试:问题描述 如下图所示,query1是个集合,把它赋值给了query2,当移除query2里面数据的时候,query1对应的数据也被移除了。 ...
    99+
    2024-04-02
  • C# List的赋值问题的解决
    在C#中,List对象的赋值问题可以通过以下几种方式解决:1. 使用构造函数进行赋值:```csharpList list1 = n...
    99+
    2023-08-15
    C#
  • vue中的传值及赋值问题怎么解决
    这篇文章主要介绍“vue中的传值及赋值问题怎么解决”,在日常操作中,相信很多人在vue中的传值及赋值问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue中的传值及赋值问题怎么解决”的疑惑有所帮助!...
    99+
    2023-06-30
  • 关于vue3中的reactive赋值问题
    目录vue3 reactive赋值问题vue3 reactive的坑清空数组清空对象vue3 reactive赋值问题 vue3中直接对reactive整个对象赋值检测不到 let ...
    99+
    2024-04-02
  • 浅谈Golang 嵌套 interface 的赋值问题
    大家还是直接看代码吧~ package main import ( "fmt" ) func main() { s := map[string]inter...
    99+
    2024-04-02
  • React createRef循环动态赋值ref问题
    目录React createRef循环动态赋值refReact中ref的理解(1) React的ref有3种用法(2) 根据ref获取dom(3) react-redux使用时利用r...
    99+
    2023-01-16
    React 循环ref React createRef createRef循环动态赋值ref
  • 深入理解Python中变量赋值的问题
    前言 在Python中变量名规则与其他大多数高级语言一样,都是受C语言影响的,另外变量名是大小写敏感的。 Python是动态类型语言,也就是说不需要预先声明变量类型,变量的类型和值在赋值那一刻被初始化,下面...
    99+
    2022-06-04
    赋值 变量 Python
  • vue 数据(data)赋值问题的解决方案
    总结一下我遇到的一个纠结很久的问题。 在项目中需要用到后台的数据对前端渲染,使用到了vue整合的axios,使用vue中的钩子函数在页面组件挂载完成之后向后台发送一个get请求然后将...
    99+
    2024-04-02
  • Python数值运算与赋值的快捷方式
    一种比较常见的操作是对一个变量进行一项数学运算并将运算得出的结果返回给这个变量,因此对于这类运算通常有如下的快捷表达方式: a = 2a = a * 3   同样也可写作: a = 2a *= 3   要注意到 变量 = 变量 运...
    99+
    2023-01-31
    赋值 数值 快捷方式
  • 解析Orika的MapperFacade属性赋值的使用问题
    目录MapperFacade 拷贝对象、拷贝集合的使用demo测试拷贝对象拷贝集合MapperFacade 拷贝对象、拷贝集合的使用 介绍MapperFactory、MapperFa...
    99+
    2024-04-02
  • python返回多个值与赋值多个值的示例代码
    目录一、总结二、Python元组_赋值与返回值1、赋值2、元组做返回值三、元组和列表 返回多个值与赋值多个值补充:Python 给多个变量同时赋值总结一、总结 一句话总结: 返回多个...
    99+
    2022-11-13
    python 返回多个值 python 返回值 python赋值多个变量
  • Python连续赋值需要注意的一些问题
    Python连续赋值的注意事项 在python中是可以使用连续赋值的方式来一次为多个变量进行赋值的,比如: a = b = c = 1 a, b, c = 1, 1, 1 这些都可以完成变量的赋值,但是就有一个...
    99+
    2022-06-02
    Python 连续赋值
  • c语言的连续赋值问题怎么解决
    C语言的连续赋值问题是指在一条语句中连续赋值多个变量时可能会出现的问题。例如: int a, b; a = b = 10; 在这个例...
    99+
    2023-10-27
    c语言
  • Request与Session的存值取值操作
    Request与Session的存值取值 request域的存值: request可以直接set进去 request.setAttribute("request", value)...
    99+
    2024-04-02
  • 聊聊Qt+OpenCV联合开发之图像的创建与赋值问题
    目录一、Mat基本结构 二、图像的克隆及拷贝1、clone函数2、copyTo函数3、示例 三、创建图像1、创建空白图像:2、创建通道都为1的图: 3、...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作