VueJS组件之间通过props交互及验证的方式


Posted in Javascript onSeptember 04, 2017

props 是父组件用来传递数据的一个自定义属性。父组件的数据需要通过 props 把数据传给子组件,子组件需要显式地用 props 选项声明 "prop"。

父组件通过props将数据传递给子组件

HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 菜鸟教程(runoob.com)</title>
<script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
</head>
<body>
<div id="app">
  <child message="hello world!">props传递给子组件</child>
</div>

<script>
// 
Vue.component('child', {
 // 声明 props
 props: ['message'],
 // 同样也可以在 vm 实例中像 “this.message” 这样使用
 template: '<h1>{{ message }}</h1>'
})
// 创建根实例
new Vue({
 el: '#app'
})
</script>
</body>
</html>

效果如图:

VueJS组件之间通过props交互及验证的方式

动态 props组建数据传递

类似于用 v-bind 绑定 HTML 特性到一个表达式,也可以用 v-bind 动态绑定 props 的值到父组件的数据中。每当父组件的数据变化时,该变化也会传导给子组件:

HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 菜鸟教程(runoob.com)</title>
<script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
</head>
<body>
<div id="app">
  <div>
   <input v-model="parentMsg">
   <br>
   <child v-bind:message="parentMsg"></child>
  </div>
</div>

<script>
// 注册
Vue.component('child', {
 // 声明 props
 props: ['message'],
 // 同样也可以在 vm 实例中像 “this.message” 这样使用
 template: '<span>{{ message }}</span>'
})
// 创建根实例
new Vue({
 el: '#app',
 data: {
  parentMsg: '父组件内容'
 }
})
</script>
</body>
</html>

效果如图:

VueJS组件之间通过props交互及验证的方式

 v-bind 指令将 todo 传到每一个重复的组件中

HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 菜鸟教程(runoob.com)</title>
<script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
</head>
<body>
<div id="app">
  <ol>
  <todo-item v-for="item in sites" v-bind:todo="item"></todo-item>
   </ol>
</div>

<script>
Vue.component('todo-item', {
 props: ['todo'],
 template: '<li>{{ todo.text }}</li>'
})
new Vue({
 el: '#app',
 data: {
  sites: [
   { text: 'Runoob' },
   { text: 'Google' },
   { text: 'Taobao' }
  ]
 }
})
</script>
</body>
</html>

效果如下:

VueJS组件之间通过props交互及验证的方式

注意: props 是单向绑定的:当父组件的属性变化时,将传导给子组件,但是不会反过来。 

组件为 props 指定验证要求

props 是一个对象而不是字符串数组时,它包含验证要求:

JS

Vue.component('example', {
 props: {
  // 基础类型检测 (`null` 意思是任何类型都可以)
  propA: Number,
  // 多种类型
  propB: [String, Number],
  // 必传且是字符串
  propC: {
   type: String,
   required: true
  },
  // 数字,有默认值
  propD: {
   type: Number,
   default: 100
  },
  // 数组/对象的默认值应当由一个工厂函数返回
  propE: {
   type: Object,
   default: function () {
    return { message: 'hello' }
   }
  },
  // 自定义验证函数
  propF: {
   validator: function (value) {
    return value > 10
   }
  }
 }
})

type 可以是下面原生构造器:

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

type 也可以是一个自定义构造器,使用 instanceof 检测。

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

Javascript 相关文章推荐
JavaScript Cookie显示用户上次访问的时间和次数
Dec 08 Javascript
JavaScript 学习笔记(六)
Dec 31 Javascript
两个比较有用的Javascript工具函数代码
Feb 17 Javascript
jQuery 学习第六课 实现一个Ajax的TreeView
May 17 Javascript
SWFObject基本用法实例分析
Jul 20 Javascript
javascript实现不同颜色Tab标签切换效果
Apr 27 Javascript
AngularJS表格添加序号的方法
Mar 03 Javascript
jQuery实现简单漂亮的Nav导航菜单效果
Mar 29 jQuery
一个简易时钟效果js实现代码
Mar 25 Javascript
js判断密码强度的方法
Mar 18 Javascript
JavaScript 禁止用户保存图片的实现代码
Apr 28 Javascript
vue集成一个支持图片缩放拖拽的富文本编辑器
Jan 29 Vue.js
vue中component组件的props使用详解
Sep 04 #Javascript
React-Native中props具体使用详解
Sep 04 #Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
Sep 04 #Javascript
JS与HTML结合实现流程进度展示条思路详解
Sep 03 #Javascript
JS实现简单的选择题测评系统代码思路详解(demo)
Sep 03 #Javascript
JS实现页面内跳转的简单代码
Sep 03 #Javascript
初探JavaScript 面向对象(推荐)
Sep 03 #Javascript
You might like
WordPress的文章自动添加关键词及关键词的SEO优化
2016/03/01 PHP
jquery api参考 visualjquery 中国线路 速度快
2007/11/30 Javascript
JavaScript 异步调用框架 (Part 4 - 链式调用)
2009/08/04 Javascript
JavaScript控制Session操作方法
2013/01/17 Javascript
jquery+json实现数据列表分页示例代码
2013/11/15 Javascript
JavaScript实现存储HTML字符串示例
2014/04/21 Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
2014/09/01 Javascript
浅谈javascript 归并方法
2015/01/21 Javascript
JS限制文本框只能输入数字和字母方法
2015/02/28 Javascript
jquery制作属于自己的select自定义样式
2015/11/23 Javascript
javascript鼠标右键菜单自定义效果
2020/12/08 Javascript
JQuery实现定时刷新功能代码
2017/05/09 jQuery
使用微信小程序开发弹出框应用实例详解
2018/10/18 Javascript
使用Vue实现移动端左滑删除效果附源码
2019/05/16 Javascript
JS事件流与事件处理程序实例分析
2019/08/16 Javascript
详解js location.href和window.open的几种用法和区别
2019/12/02 Javascript
解决小程序无法触发SESSION问题
2020/02/03 Javascript
python opencv实现任意角度的透视变换实例代码
2018/01/12 Python
如何在Django中设置定时任务的方法示例
2019/01/18 Python
ML神器:sklearn的快速使用及入门
2019/07/11 Python
python 最简单的实现适配器设计模式的示例
2020/06/30 Python
python中re模块知识点总结
2021/01/17 Python
CSS3 实现倒计时效果
2020/11/25 HTML / CSS
希腊品牌鞋类销售网站:epapoutsia.gr
2020/03/18 全球购物
意大利网上购书网站:Libraccio.it
2021/02/03 全球购物
学前班教师的自我鉴定
2013/12/05 职场文书
学生请假条格式
2014/04/11 职场文书
优秀员工演讲稿
2014/05/19 职场文书
2014年收银工作总结
2014/11/13 职场文书
学术会议邀请函
2015/01/30 职场文书
肖申克的救赎观后感
2015/06/02 职场文书
冲出亚马逊观后感
2015/06/03 职场文书
电影焦裕禄观后感
2015/06/09 职场文书
市语委办2016年第十九届“推普周”活动总结
2016/04/05 职场文书
《正面管教》读后有感:和善而坚定的旅程
2019/12/19 职场文书
使用springboot暴露oracle数据接口的问题
2021/05/07 Oracle