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 相关文章推荐
脚本收藏iframe
Jul 21 Javascript
jQuery 注意事项 与原因分析
Apr 24 Javascript
纯JS实现的批量图片预览加载功能
Aug 14 Javascript
js向上无缝滚动,网站公告效果 具体代码
Nov 18 Javascript
node.js中的fs.fsyncSync方法使用说明
Dec 15 Javascript
关于JS中二维数组的声明方法
Sep 24 Javascript
非常实用的vue导航钩子
Mar 20 Javascript
bing Map 在vue项目中的使用详解
Apr 09 Javascript
一个Vue页面的内存泄露分析详解
Jun 25 Javascript
微信小程序网络请求封装示例
Jul 24 Javascript
详解小程序中h5页面onShow实现及跨页面通信方案
May 30 Javascript
微信小程序返回上一页传参并刷新过程解析
Dec 13 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小技巧搜集,每个PHPer都来露一手
2007/01/02 PHP
php简单获取文件扩展名的方法
2015/03/24 PHP
phpStudy配置多站点多域名和多端口的方法
2017/09/01 PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
javascript控制frame,iframe的src属性代码
2009/12/31 Javascript
善用事件代理,警惕闭包的性能陷阱。
2011/01/20 Javascript
DIV+CSS+JS不间断横向滚动实现代码
2013/03/19 Javascript
Jquery如何实现点击时高亮显示代码
2014/01/22 Javascript
javascript实现倒计时并弹窗提示特效
2015/06/05 Javascript
JS选中checkbox后获取table内一行TD所有数据的方法
2015/07/01 Javascript
JavaScript类型系统之正则表达式
2016/01/05 Javascript
JavaScript知识点总结之如何提高性能
2016/01/15 Javascript
js实现带农历和八字等信息的日历特效
2016/05/16 Javascript
关于JS中的方法是否加括号的问题
2016/07/27 Javascript
AngularJS ng-mousedown 指令
2016/08/02 Javascript
JS原型继承四步曲及原型继承图一览
2017/11/28 Javascript
微信小程序三级联动选择器使用方法
2020/05/19 Javascript
JavaScript引用类型Array实例分析
2018/07/24 Javascript
Vue项目中使用better-scroll实现一个轮播图自动播放功能
2018/12/03 Javascript
详解vue-cli+es6引入es5写的js(两种方法)
2019/04/19 Javascript
JQuery中的常用事件、对象属性与使用方法分析
2019/12/23 jQuery
Python tkinter模块中类继承的三种方式分析
2017/08/08 Python
对tensorflow 的模型保存和调用实例讲解
2018/07/28 Python
TensorFlow Session会话控制&amp;Variable变量详解
2018/07/30 Python
Django model重写save方法及update踩坑详解
2020/07/27 Python
拿来就用!Python批量合并PDF的示例代码
2020/08/10 Python
利用python查看数组中的所有元素是否相同
2021/01/08 Python
英国的领先快速时尚零售商:In The Style
2019/03/25 全球购物
全球最大的瓷器、水晶和银器零售商:Replacements
2020/06/15 全球购物
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
音乐学院硕士生的自我评价分享
2013/11/01 职场文书
运动会入场词60字
2014/02/15 职场文书
人事任命书怎么写
2014/06/05 职场文书
财务检查整改报告
2014/11/06 职场文书
培根随笔读书笔记
2015/07/01 职场文书
Spring this调用当前类方法无法拦截的示例代码
2022/03/20 Java/Android