Vue.js组件props数据验证实现详解


Posted in Javascript onOctober 19, 2019

本文实例为大家分享了Vue.js组件props数据验证的具体代码,供大家参考,具体内容如下

数据验证

一般当组件需要提供给别人使用时,就需要使用数据验证。

示例:

<script>
  Vue.component('my-component',{
    props:{
      //必须是数字类型
      propA: Number,
      //必须是字符串或数字类型
      propB:[String, Number],
      //布尔值,如果没有定义,默认值就是true
      propC:{
        type: Boolean,
        default: true
      },
      //数字,而且是必选
      propD: {
        type: Number,
        required: true
      },
      //如果是数组或对象,默认值必须是一个函数来返回
      propE: {
        type: Array,
        default: function () {
          return {};
        }
      },
      //自定义验证函数
      propF: {
        viladator: function (value) {
          return value > 10;
        }
      }
    }
  });
</script>

验证的type类型可以是:

  • String
  • Number
  • Boolean
  • Object
  • Array
  • Function

type也可以是一个自定义构造器,使用instanceof检测。当prop验证失败时,开发版本下会在控制台抛出一条警告。

实例:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <script src="https://unpkg.com/vue/dist/vue.js"></script>
  <title>组件:参数验证</title>
</head>
<body>
  <!--为组件中接受到的变量进行逻辑验证-->
  <div id="myApp">
    <h1>身世之谜</h1>
    <show-member-info name="koma" :age="25" :detail="{address:'earth',language:'世界语'}"></show-member-info>
  </div>
  <script>
    Vue.component('show-member-info',{
      props: {
        name: {
          type: String,//类型
          required: true,//必选,不选报错
        },
        age: {
          type: Number,
          validator: function (value) {
            return value >= 0 && value <=130;
          }
        },
        detail: {
          type: Object,
          default: function () {
            return {
              address: 'US',
              language: 'English'
            };
          }
        }
      },
      template: '<div>姓名:{{this.name}}<br/>'
          + '年龄:{{this.age}}岁<br/>'
          + '地址:{{this.detail.address}}<br/>'
          + '语言:{{this.detail.language}}</div>'
    });
    var myApp = new Vue({
      el: '#myApp'
    });
  </script>
</body>
</html>

更多教程点击《Vue.js前端组件学习教程》,欢迎大家学习阅读。

关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js之WEB开发调试利器:Firebug 下载
Jan 13 Javascript
浅析document.ready和window.onload的区别讲解
Dec 18 Javascript
JQuery点击行tr实现checkBox选中的简单实例
May 26 Javascript
JS未跨域操作iframe里的DOM
Jun 01 Javascript
js中获取 table节点各tr及td的内容简单实例
Oct 14 Javascript
Node.js+ES6+dropload.js实现移动端下拉加载实例
Jun 01 Javascript
JS实现的数组去除重复数据算法小结
Nov 17 Javascript
vue :src 文件路径错误问题的解决方法
May 15 Javascript
vue基于element的区间选择组件
Sep 07 Javascript
angularjs1.5 组件内用函数向外传值的实例
Sep 30 Javascript
ElementUI radio组件选中小改造
Aug 12 Javascript
理解JavaScript中的对象
Aug 25 Javascript
Vue.js组件使用props传递数据的方法
Oct 19 #Javascript
Vue.js数字输入框组件使用方法详解
Oct 19 #Javascript
JavaScript闭包相关知识解析
Oct 19 #Javascript
Vue.js组件通信之自定义事件详解
Oct 19 #Javascript
Vue.js自定义指令学习使用详解
Oct 19 #Javascript
Vue.js标签页组件使用方法详解
Oct 19 #Javascript
基于JavaScript获取base64图片大小
Oct 18 #Javascript
You might like
全国中波电台频率表
2020/03/11 无线电
PHP的substr_replace将指定两位置之间的字符替换为*号
2011/05/04 PHP
php简单解析mysqli查询结果的方法(2种方法)
2016/06/29 PHP
详解php中空字符串和0之间的关系
2016/10/23 PHP
PHP设计模式之适配器模式定义与用法详解
2018/04/03 PHP
JavaScript 封装Ajax传递的数据代码
2009/06/05 Javascript
纯javascript制作日历控件
2015/07/17 Javascript
jQuery结合CSS制作动态的下拉菜单
2015/10/27 Javascript
jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法
2016/10/14 Javascript
jQuery简单获取DIV和A标签元素位置的方法
2017/02/07 Javascript
基于jQuery封装的分页组件
2017/06/26 jQuery
微信小程序按钮去除边框线分享页面功能
2018/08/27 Javascript
koa2服务端使用jwt进行鉴权及路由权限分发的流程分析
2019/07/22 Javascript
在VUE中使用lodash的debounce和throttle操作
2020/11/09 Javascript
python实现数值积分的Simpson方法实例分析
2015/06/05 Python
Python tornado队列示例-一个并发web爬虫代码分享
2018/01/09 Python
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
Python基础教程之内置函数locals()和globals()用法分析
2018/03/16 Python
python获取指定字符串中重复模式最高的字符串方法
2018/06/29 Python
Python对excel文档的操作方法详解
2018/12/10 Python
python面试题之列表声明实例分析
2019/07/08 Python
python找出列表中大于某个阈值的数据段示例
2019/11/24 Python
Python Matplotlib绘图基础知识代码解析
2020/08/31 Python
澳大利亚首屈一指的在线购物目的地:Kogan.com
2017/02/02 全球购物
雅诗兰黛旗下专业男士保养领导品牌:Lab Series
2017/05/15 全球购物
好的演讲稿开场白
2013/12/30 职场文书
优秀教师获奖感言
2014/01/31 职场文书
剪彩仪式主持词
2014/03/19 职场文书
教师求职自荐书
2014/06/14 职场文书
中文专业求职信
2014/06/20 职场文书
质量整改通知单
2015/04/21 职场文书
2015年医院科室工作总结范文
2015/05/26 职场文书
初中英语教师个人工作总结2015
2015/07/21 职场文书
大学优秀学生主要事迹材料
2015/11/04 职场文书
python利用pandas分析学生期末成绩实例代码
2021/07/09 Python
一篇文章看懂MySQL主从复制与读写分离
2021/11/07 MySQL