vue组件父子间通信之综合练习(聊天室)


Posted in Javascript onNovember 07, 2017

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

<!doctype html>
<html>
 <head>
 <meta charset="UTF-8">
 <title>组件父子间通信之综合练习</title>
 <script src="js/vue.js"></script>
 </head>
 <body>
 <div id="container">
  <p>{{msg}}</p>
  <chat-room></chat-room>
 </div>
 <script>

// 创建父组件
  Vue.component("chat-room",{
  //data属性中的chatList保存用户聊天信息
   data:function(){
    return{
     chatList:[]
    }
   },
   template:`
    <div>
     //假的聊天室
     <h1>假的聊天室</h1>
     <user-component userName="Rose"></user-component>
     <user-component userName="Jack"></user-component>
     //显示用户的聊天信息
     <ul>
      <li v-for="tmp in chatList">{{tmp}}</li>
     </ul>
    </div>
   `
  })
 //创建子组件 
  Vue.component("user-component",{
   props:["userName"],
   //通过v-model把用户输入的数据保存到userInput数组
   data:function(){
    return {
     userInput:[]
    }
   },
   methods:{
    //把用户输入的数据以及用户名label信息push给chatList数组
    sendChat:function(){
     this.$parent.chatList.push(this.userName+":"+this.userInput);
     //情况input框
     this.userInput =" ";
    }
   },
   template:`
    <div>
     <label>{{userName}}</label>
     <input type="text" v-model="userInput"/>
     <button @click="sendChat">发送</button>
    </div>
   `
  })
  new Vue({
   el:"#container",
   data:{
    msg:"Hello VueJs"
   }
  })
 </script>
 </body>
</html>

组件间通信综合练习:
(props down,events up)
有2个组件:chat-room,user-component
user-component是由label input button构成
chat-room是由两个user-component和一个列表构成

①在chat-room调用user-component指定label的名字
②在user-component,
点击按钮时,将当前用户输入的信息发送给chat-room组件,chat-room接收到数据显示在列表中

 代码:

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

<div id="container">
 <chat-room></chat-room>
</div>

<script>
 Vue.component('chat-room',{
  methods:{
   recvMsg:function(msg){
    console.log("在父组件中接收子组件传来的数据"+msg);
    this.chatList.push(msg);
   }
  },
 data: function () {
  return {
  chatList:[]
  }
 },
 template:`
  <div>
    <h1>假的聊天室</h1>
  <ul>
   <li v-for="tmp in chatList">
   {{tmp}}
   </li>
  </ul>
  <user-component userName="Lucy" @sendToFather="recvMsg"></user-component>
  <user-component userName="Merry" @sendToFather="recvMsg"></user-component>
  </div>
  `
 })

 Vue.component('user-component',{
 props:['userName'],
 data: function () {
  return {
  userInput:''
  }
 },
 methods:{
  sendToFather: function () {
  //触发toFatherEvent的事件,把input中
  //用户输入的数据发送
  this.$emit("sendToFather",this.userName+":"+this.userInput);
  }
 },
 template:`
  <div>
  <label>{{userName}}</label>
  <input type="text" v-model="userInput"/>
  <button @click="sendToFather">发送</button>
  </div>
  `
 })
 new Vue({
 el: '#container',
  data: {
  msg: 'Hello Vue'
  }
 })
</script>

</body>
</html>

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

Javascript 相关文章推荐
Prototype Template对象 学习
Jul 19 Javascript
基于JavaScript 下namespace 功能的简单分析
Jul 05 Javascript
jQuery实现菜单式图片滑动切换
Mar 14 Javascript
详谈LABJS按需动态加载js文件
May 07 Javascript
javascript数组排序汇总
Jul 07 Javascript
AngularJS 异步解决实现方法
Jun 12 Javascript
小发现之浅谈location.search与location.hash的问题
Jun 23 Javascript
JavaScript实现写入文件到本地的方法【基于FileSaver.js插件】
Mar 15 Javascript
基于mpvue的小程序项目搭建的步骤
May 22 Javascript
layui使用button按钮 点击出现弹层 弹层中加载表单的实例
Sep 04 Javascript
在项目vue中使用echarts的操作步骤
Sep 07 Javascript
JavaScript流程控制(循环)
Dec 06 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
vue环境搭建简单教程
Nov 07 #Javascript
You might like
社区(php&amp;&amp;mysql)二
2006/10/09 PHP
我的论坛源代码(四)
2006/10/09 PHP
PHP抓屏函数实现屏幕快照代码分享
2014/01/02 PHP
学习php设计模式 php实现装饰器模式(decorator)
2015/12/07 PHP
thinkphp3.2实现上传图片的控制器方法
2016/04/28 PHP
php接口技术实例详解
2016/12/07 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
2019/02/08 PHP
详细分析PHP 命名空间(namespace)
2020/06/30 PHP
JavaScript面向对象知识串结(读JavaScript高级程序设计(第三版))
2012/07/17 Javascript
jquery自定义属性(类型/属性值)
2013/05/21 Javascript
javascipt:filter过滤介绍及使用
2014/09/10 Javascript
angularJS 入门基础
2015/02/09 Javascript
JavaScript 匿名函数和闭包介绍
2015/04/13 Javascript
jQuery获取剪贴板内容的方法
2016/06/16 Javascript
微信js-sdk界面操作接口用法示例
2016/10/12 Javascript
jQuery序列化表单成对象的简单实现
2016/11/29 Javascript
JS去掉字符串中所有的逗号
2017/10/18 Javascript
vue 过滤器filter实例详解
2018/03/14 Javascript
详解各版本React路由的跳转的方法
2018/05/10 Javascript
Webpack 4.x搭建react开发环境的方法步骤
2018/08/15 Javascript
layui 弹出层回调获取弹出层数据的例子
2019/09/02 Javascript
vue实现选中效果
2020/10/07 Javascript
[10:04]国际邀请赛采访专栏:DK.Farseer,mouz.Black^,采访员Josh专访
2013/08/05 DOTA
[48:05]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VGJ.T vs VP
2018/03/31 DOTA
书单|人生苦短,你还不用python!
2017/12/29 Python
python制作mysql数据迁移脚本
2019/01/01 Python
Python的条件表达式和lambda表达式实例
2019/01/31 Python
windows、linux下打包Python3程序详细方法
2020/03/17 Python
HTML5 客户端数据库简易使用:IndexedDB
2019/12/19 HTML / CSS
逻辑链路控制协议
2016/10/01 面试题
大学生找工作求职信
2014/07/09 职场文书
2015年机关纠风工作总结
2015/05/15 职场文书
音乐剧猫观后感
2015/06/04 职场文书
商务英语邮件开头问候语
2015/11/10 职场文书
Python使用socket去实现TCP客户端和TCP服务端
2022/04/12 Python
JDK8中String的intern()方法实例详细解读
2022/09/23 Java/Android