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接口实现代码 (Interfaces In JavaScript)
Jun 11 Javascript
Jquery 表格合并的问题分享
Sep 17 Javascript
JS记录用户登录次数实现代码
Jan 15 Javascript
table对象中的insertRow与deleteRow使用示例
Jan 26 Javascript
innerHTML动态添加html代码和脚本兼容多个浏览器
Oct 11 Javascript
JS实现鼠标箭头变成一个燃烧烛光效果的方法
Feb 28 Javascript
基于Vue.js实现简单搜索框
Mar 26 Javascript
基于openlayers4实现点的扩散效果
Aug 17 Javascript
JavaScript之数组扁平化详解
Jun 03 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
Feb 01 jQuery
Vue中强制组件重新渲染的正确方法
Jan 03 Vue.js
JavaScript中跨域问题的深入理解
Mar 04 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
Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置
2006/11/18 PHP
PHP chmod 函数与批量修改文件目录权限
2010/05/10 PHP
php入门学习知识点五 关于php数组的几个基本操作
2011/07/14 PHP
php 数据库字段复用的基本原理与示例
2011/07/22 PHP
使用array mutisort 实现按某字段对数据排序
2013/06/18 PHP
简单的php缓存类分享     php缓存机制
2014/01/22 PHP
php语法检查的方法总结
2019/01/21 PHP
10款非常有用的 Ajax 插件分享
2012/03/14 Javascript
基于jQuery实现图片的前进与后退功能
2013/04/24 Javascript
js判断鼠标同时离开两个div的思路及代码
2013/05/31 Javascript
js获取url中&quot;?&quot;后面的字串方法
2014/05/15 Javascript
form.submit()不能提交表单的错误原因及解决方法
2014/10/13 Javascript
js基础之DOM中元素对象的属性方法详解
2016/10/28 Javascript
浅析js的模块化编写 require.js
2016/12/07 Javascript
jQuery简单实现遍历单选框的方法
2017/03/06 Javascript
Vue.js结合bootstrap实现分页控件
2017/03/10 Javascript
webpack+vue+express(hot)热启动调试简单配置方法
2018/09/19 Javascript
玩转Koa之koa-router原理解析
2018/12/29 Javascript
layui 实现二级弹窗弹出之后 关闭一级弹窗的方法
2019/09/18 Javascript
详解Vue3 Composition API中的提取和重用逻辑
2020/04/29 Javascript
JavaScript进阶(一)变量声明提升实例分析
2020/05/09 Javascript
vue+axios全局添加请求头和参数操作
2020/07/24 Javascript
遗传算法之Python实现代码
2017/10/10 Python
Python之ReportLab绘制条形码和二维码的实例
2018/01/15 Python
快速解决pandas.read_csv()乱码的问题
2018/06/15 Python
Python列表切片常用操作实例解析
2019/12/16 Python
Python 实现try重新执行
2019/12/21 Python
建筑施工员岗位职责
2013/11/26 职场文书
幼教求职信
2014/03/12 职场文书
关于护士节的演讲稿
2014/05/26 职场文书
信息管理专业自荐书
2014/06/05 职场文书
医生见习报告范文
2014/11/03 职场文书
校园环境卫生倡议书
2015/04/29 职场文书
小学开学典礼新闻稿
2015/07/17 职场文书
MySQL的表级锁,行级锁,排它锁和共享锁
2022/07/15 MySQL
Springboot集成kafka高级应用实战分享
2022/08/14 Java/Android