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 相关文章推荐
jquery 获取json数据实现代码
Apr 27 Javascript
js 图片等比例缩放代码
May 13 Javascript
最佳JS代码编写的14条技巧
Jan 09 Javascript
display和visibility的区别示例介绍
Feb 26 Javascript
Javascript中Array.prototype.map()详解
Oct 22 Javascript
jQuery表单事件实例代码分享
Aug 18 Javascript
深入了解JavaScript的逻辑运算符(与、或)
Dec 20 Javascript
简单实现js无缝滚动效果
Feb 05 Javascript
AngularJS中使用ngModal模态框实例
May 27 Javascript
使用JavaScript实现一个小程序之99乘法表
Sep 21 Javascript
jQuery图片加载失败替换默认图片方法汇总
Nov 29 jQuery
Vue结合后台导入导出Excel问题详解
Feb 19 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制作简单的内容采集器的原理分析
2008/10/01 PHP
Memcache 在PHP中的使用技巧
2010/02/08 PHP
PHP 返回13位时间戳的实现代码
2016/05/13 PHP
php for 循环使用的简单实例
2016/06/02 PHP
php导出csv文件,可导出前导0实例代码
2016/11/16 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
laravel csrf排除路由,禁止,关闭指定路由的例子
2019/10/21 PHP
javascript function调用时的参数检测常用办法
2010/02/26 Javascript
从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件
2011/02/23 Javascript
浅谈javascript的原型继承
2012/07/25 Javascript
jQuery 绑定事件到动态创建的元素上的方法实例
2013/08/18 Javascript
javascript中parentNode,childNodes,children的应用详解
2013/12/17 Javascript
第一次接触神奇的Bootstrap基础排版
2016/07/26 Javascript
详谈js对url进行编码和解码(三种方式的区别)
2017/08/16 Javascript
Vue2.0用户权限控制解决方案
2017/11/29 Javascript
如何解决日期函数new Date()浏览器兼容性问题
2019/09/11 Javascript
Node使用Selenium进行前端自动化操作的代码实现
2019/10/10 Javascript
Python中解析JSON并同时进行自定义编码处理实例
2015/02/08 Python
python获取一组汉字拼音首字母的方法
2015/07/01 Python
python3+selenium实现126邮箱登陆并发送邮件功能
2019/01/23 Python
python挖矿算力测试程序详解
2019/07/03 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
2020/03/08 Python
详解anaconda离线安装pytorchGPU版
2020/09/08 Python
python中pop()函数的语法与实例
2020/12/01 Python
使用Python+Appuim 清理微信的方法
2021/01/26 Python
HTML5的结构和语义(2):结构
2008/10/17 HTML / CSS
德国苹果商店:MacTrade
2020/05/18 全球购物
Linux文件系统类型
2012/02/15 面试题
node中使用shell脚本的方法步骤
2021/03/23 Javascript
公司联欢晚会主持词
2014/03/22 职场文书
继承公证书
2014/04/09 职场文书
关于保护环境的建议书
2014/05/13 职场文书
碧霞祠导游词
2015/02/09 职场文书
介绍信怎么写
2015/05/05 职场文书
Three.js实现雪糕地球的使用示例详解
2022/07/07 Javascript
MySQL 原理与优化之原数据锁的应用
2022/08/14 MySQL