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中filter(),not(),split()使用方法
Jul 06 Javascript
jQuery替换字符串(实例代码)
Nov 13 Javascript
JavaScript、tab切换完整版(自动切换、鼠标移入停止、移开运行)
Jan 05 Javascript
jQuery遍历DOM节点操作之filter()方法详解
Apr 14 Javascript
原生js实现水平方向无缝滚动
Jan 10 Javascript
layer弹出层框架alert与msg详解
Mar 14 Javascript
移动端效果之Swiper详解
Oct 09 Javascript
详解vue-router传参的两种方式
Sep 10 Javascript
小程序如何使用分包加载的实现方法
May 22 Javascript
js实现点击烟花特效
Oct 14 Javascript
vant 中van-list的用法说明
Nov 11 Javascript
聊聊vue 中的v-on参数问题
Jan 29 Vue.js
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_Cooikes不同页面无法传递的解决方法
2014/03/07 PHP
php防止伪造的数据从URL提交方法
2014/06/27 PHP
php基于mcrypt的加密解密实例
2014/10/27 PHP
表单(FORM)的一些实用效果代码
2007/03/25 Javascript
extjs grid设置某列背景颜色和字体颜色的方法
2010/09/03 Javascript
js生成验证码并直接在前端判断
2015/05/15 Javascript
bootstrap使用validate实现简单校验功能
2016/12/02 Javascript
Javascript中八种遍历方法的执行速度深度对比
2017/04/25 Javascript
jQuery操作之效果详解
2017/05/19 jQuery
JavaScript正则表达式简单实用实例
2017/06/23 Javascript
原生js实现密码输入框值的显示隐藏
2017/07/17 Javascript
jquery的 filter()方法使用教程
2018/03/22 jQuery
微信小程序之swiper轮播图中的图片自适应高度的方法
2018/04/23 Javascript
基于React Native 0.52实现轮播图效果
2020/08/25 Javascript
9102了,你还不会移动端真机调试吗
2019/03/25 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
2019/05/18 Javascript
[43:35]TI4 循环赛第二日Liquid vs Fnatic
2014/07/11 DOTA
[36:13]Mineski vs iG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
CentOS安装pillow报错的解决方法
2016/01/27 Python
Python利用IPython提高开发效率
2016/08/10 Python
关于pip的安装,更新,卸载模块以及使用方法(详解)
2017/05/19 Python
PyQt5每天必学之单行文本框
2018/04/19 Python
Python中base64与xml取值结合问题
2019/12/22 Python
俄罗斯一家时尚女装商店:Charuel
2019/12/04 全球购物
strstr()的简单实现
2013/09/26 面试题
银行自荐信范文
2013/10/07 职场文书
办公室文员工作自我评价
2013/12/01 职场文书
汉语言文学职业规划
2014/02/14 职场文书
消防标语大全
2014/06/07 职场文书
2015年政府采购工作总结
2015/05/21 职场文书
2015年监理个人工作总结
2015/05/23 职场文书
2015年教务处干事工作总结
2015/07/22 职场文书
2016创先争优活动党员公开承诺书
2016/03/24 职场文书
Python实现byte转integer
2021/06/03 Python
Python实现生活常识解答机器人
2021/06/28 Python
Python 可迭代对象 iterable的具体使用
2021/08/07 Python