• 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>
  • 相关阅读:
    mysql中lock tables与unlock tables(锁表/解锁)使用总结
    php开始,html应用的一些不错收藏
    正则表达总结
    yii2 安装
    Nginx出现413 Request Entity Too Large错误解决方法
    jQuery中使用ajaxSubmit提交表单
    Go Log模块生成日志文件
    Go sync模块
    Golang html encoding解析
    Go struct tag
  • 原文地址:https://www.cnblogs.com/wangruifang/p/7772261.html
Copyright © 2020-2023  润新知