zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    使用PHP QR Code生成二维码
    thinkphp伪静态(url重写)
    jQuery Ajax 实例 ($.ajax、$.post、$.get)
    php各种编码集详解和以及在什么情况下进行使用
    PHP无限极分类生成树方法,无限分级
    PHP5: mysqli 插入, 查询, 更新和删除 Insert Update Delete Using mysqli (CRUD)
    Js获取当前日期时间及其它操作
    Spring源码解读Spring IOC原理
    java多线程系列六、线程池
    springMVC中ajax的实现
  • 原文地址:https://www.cnblogs.com/wangruifang/p/7772261.html
Copyright © 2011-2022 走看看