vue组件父与子通信详解(一)


Posted in Javascript onNovember 07, 2017

本文实例为大家分享了vue组件父与子通信的具体代码,供大家参考,具体内容如下

一、组件间通信(父组件    -->  子组件)

步骤:

①父组件在调用子组件 传值

<child-component myValue="123"> </child-component>

②在子组件中 获取父组件传来的值

Vue.component('child-component',{
props:['myValue'],

template:''
})

代码1:

<!doctype html>
<html>
 <head>
 <meta charset="UTF-8">
 <title>父传子</title>
 <script src="js/vue.js"></script>
 </head>
 <body>
 <div id="container">
 <p>{{msg}}</p>
 <parent-component></parent-component>
 </div>
 <script>
 // 在vue中一切都是组件
 //父传子
 Vue.component("parent-component",{
  data:function(){
  return {
   gift:"传家宝"
  }
  },
  template:`
  <div>
   <h1>这是父组件</h1>
   <hr>
   <child-component v-bind:myValue="gift"></child-component>
  </div>
  `
 })
 Vue.component("child-component",{
  props:["myValue"],
  template:`
  <div>
   <h1>这是子组件</h1>
   <p>{{"父传递的值:"+myValue}}</p>
  </div>
  `
 })
 new Vue({
  el:"#container",
  data:{
  msg:"Hello VueJs"
  }
 })
 </script>
 </body>
</html>

myValue是属性名,必须都一样……拿data中的用v-bind:或者:
props是property属性,是个数组

代码2:

<!doctype html>
<html>
 <head>
 <meta charset="UTF-8">
 <title>父子之间通信练习</title>
 <script src="js/vue.js"></script>
 </head>
 <body>
 <div id="container">
 <p>{{msg}}</p>
 <my-login></my-login>
 </div>
 <script>
/*
 登录窗口
 创建4个组件,分别是my-label my-input my-button my-login(复合组件)
*/
 Vue.component("my-label",{
  props:["myLabel"],
  template:`
  <div>
   <label>{{myLabel}}</label>
  </div>
  `
 })
 Vue.component("my-input",{
  template:`
  <div>
   <input type="text"/>
  </div>
  `
 })
 Vue.component("my-button",{
  props:["myButton"],
  template:`
  <div>
   <button>{{myButton}}</button>
  </div>
  `
 })
 //复合组件
 Vue.component("my-login",{
  data:function(){
  return {
   uname:"用户名",
   upwd:"密码",
   login:"登录",
   register:"注册"
  }
  },
  template:`
  <div>
  <my-label v-bind:myLabel="uname"></my-label>
  <my-input></my-input>
  <my-label v-bind:myLabel="upwd"></my-label>
  <my-input></my-input>
  <my-button v-bind:myButton="login"></my-button> 
  <my-button v-bind:myButton="register"></my-button>
  </div>
  `
 })
 new Vue({
  el:"#container",
  data:{
  msg:"Hello VueJs"
  }
 })
 </script>
 </body>
</html>

代码3:

<!DOCTYPE html>
<html>
<head lang="en">
 <meta charset="UTF-8">
 <script src="js/vue.js"></script>
 <title></title>
</head>
<body>

<div id="container">
 <my-login></my-login>
</div>

<script>

 Vue.component('my-label',{
 props:['labelName'],
 template:'<label>{{labelName}}</label>'
 })
 Vue.component('my-input',{
 props:['tips'],
 template:'<input type="text" :placeholder="tips"/>'
 })
 Vue.component('my-button',{
 props:['btnName'],
 template:'<button>{{btnName}}</button>'
 })

 Vue.component('my-login',{
 template:`
 <form>
  <my-label labelName="用户名"></my-label>
  <my-input tips="请输入用户名"></my-input>
  <br/>
  <my-label labelName="密码"></my-label>
  <my-input tips="请输入密码"></my-input>
  <br/>
  <my-button btnName="登录"></my-button>
  <my-button btnName="注册"></my-button>
 </form>
 `
 })


 new Vue({
 el: '#container',
 data: {
  msg: 'Hello Vue'
 }
 })
</script>

</body>
</html>

要拿到data中的数据就要v-bind,否则就不用。

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

Javascript 相关文章推荐
JavaScript入门教程(7) History历史对象
Jan 31 Javascript
JavaScript 获得选中文本内容的方法
Feb 15 Javascript
3Z版基于jquery的图片复选框(asp.net+jquery)
Apr 12 Javascript
js弹出确认是否删除对话框
Mar 27 Javascript
jquery处理页面弹出层查询数据等待操作实例
Mar 25 Javascript
JS+CSS实现TreeMenu二级树形菜单完整实例
Sep 18 Javascript
JS使用eval()动态创建变量的方法
Jun 03 Javascript
jQuery实现的纵向下拉菜单实例详解【附demo源码下载】
Jul 09 Javascript
vue axios 给生产环境和发布环境配置不同的接口地址(推荐)
May 08 Javascript
JavaScript常用数学函数用法示例
May 14 Javascript
Vue中用JSON实现刷新界面不影响倒计时
Oct 26 Javascript
AJAX学习笔记
May 18 Javascript
vue组件父子间通信之综合练习(聊天室)
Nov 07 #Javascript
Mint UI 基于 Vue.js 移动端组件库
Nov 07 #Javascript
vue中SPA单页面应用程序详解
Nov 07 #Javascript
vue-router实现组件间的跳转(参数传递)
Nov 07 #Javascript
详解Vue路由钩子及应用场景(小结)
Nov 07 #Javascript
Vue-Router实现组件间跳转的三种方法
Nov 07 #Javascript
vue 运用mock数据的示例代码
Nov 07 #Javascript
You might like
PHP HTML代码串截取代码
2008/12/29 PHP
php长字符串定义方法
2012/07/12 PHP
PHP实现手机归属地查询API接口实现代码
2012/08/27 PHP
用Simple Excel导出xls实现方法
2012/12/06 PHP
采用thinkphp自带方法生成静态html文件详解
2014/06/13 PHP
微信公众平台开发关注及取消关注事件的方法
2014/12/23 PHP
PHP+MySql+jQuery实现的&quot;顶&quot;和&quot;踩&quot;投票功能
2016/05/21 PHP
PHP中快速生成随机密码的几种方式
2017/04/17 PHP
在javascript中执行任意html代码的方法示例解读
2013/12/25 Javascript
iframe窗口高度自适应的实现方法
2014/01/08 Javascript
基于NodeJS的前后端分离的思考与实践(五)多终端适配
2014/09/26 NodeJs
JavaScript获取中英文混合字符串长度的方法示例
2017/02/04 Javascript
Vue获取DOM元素样式和样式更改示例
2017/03/07 Javascript
Bootstrap缩略图的创建方法
2017/03/22 Javascript
浅谈webpack打包过程中因为图片的路径导致的问题
2018/02/21 Javascript
jquery.pagination.js分页使用教程
2018/10/23 jQuery
vue中利用simplemde实现markdown编辑器(增加图片上传功能)
2019/04/29 Javascript
使用Python制作获取网站目录的图形化程序
2015/05/04 Python
Python 中 list 的各项操作技巧
2017/04/13 Python
python+selenium实现京东自动登录及秒杀功能
2017/11/18 Python
Python使用ctypes调用C/C++的方法
2019/01/29 Python
windows下安装Python虚拟环境virtualenvwrapper-win
2019/06/14 Python
Django框架 querySet功能解析
2019/09/04 Python
python 模拟创建seafile 目录操作示例
2019/09/26 Python
pytorch之添加BN的实现
2020/01/06 Python
Python pandas 列转行操作详解(类似hive中explode方法)
2020/05/18 Python
20行代码教你用python给证件照换底色的方法示例
2021/02/05 Python
css3新增颜色表示方式分享
2014/04/15 HTML / CSS
时尚孕妇装:Ingrid & Isabel
2019/05/08 全球购物
学术会议欢迎词
2014/01/09 职场文书
促销活动方案模板
2014/02/24 职场文书
现实表现材料范文
2014/12/23 职场文书
MySQL索引知识的一些小妙招总结
2021/05/10 MySQL
MySQL学习必备条件查询数据
2022/03/25 MySQL
python APScheduler执行定时任务介绍
2022/04/19 Python
配置nginx负载均衡
2022/05/06 Servers