• vue组件父与子通信-登录窗口


    一、组件间通信(父组件    -->  子组件)
    步骤:
    ①父组件在调用子组件 传值
    <child-component myValue="123"> </child-component>
    ②在子组件中 获取父组件传来的值
    Vue.component('child-component',{
      props:['myValue'],
      template:''
    })

    <!doctype html>
    <html>
     <head>
      <meta charset="UTF-8">
      <title>父传子</title>
        <script src="js/vue.js"></script>
     </head>
     <body>
      <div id="container">
            <p>{{msg}}</p>
            <parent-component></parent-component>
        </div>
        <script>
            // 在vue中一切都是组件
            //父传子
            Vue.component("parent-component",{
                data:function(){
                    return {
                        gift:"传家宝"
                    }
                },
                template:`
                    <div>
                        <h1>这是父组件</h1>
                        <hr>
                        <child-component v-bind:myValue="gift"></child-component>
                    </div>
                `
            })
            Vue.component("child-component",{
                props:["myValue"],
                template:`
                    <div>
                        <h1>这是子组件</h1>
                        <p>{{"父传递的值:"+myValue}}</p>
                    </div>
                `
            })
            new Vue({
                el:"#container",
                data:{
                    msg:"Hello VueJs"
                }
            })
        </script>
     </body>
    </html>
    myValue是属性名,必须都一样……拿data中的用v-bind:或者:
    props是property属性,是个数组
    <!doctype html>
    <html>
     <head>
      <meta charset="UTF-8">
      <title>父子之间通信练习</title>
        <script src="js/vue.js"></script>
     </head>
     <body>
      <div id="container">
            <p>{{msg}}</p>
            <my-login></my-login>
        </div>
        <script>
    /*
        登录窗口
        创建4个组件,分别是my-label my-input my-button my-login(复合组件)
    */
            Vue.component("my-label",{
                props:["myLabel"],
                template:`
                    <div>
                        <label>{{myLabel}}</label>
                    </div>
                `
            })
            Vue.component("my-input",{
                template:`
                    <div>
                        <input type="text"/>
                    </div>
                `
            })
            Vue.component("my-button",{
                props:["myButton"],
                template:`
                    <div>
                        <button>{{myButton}}</button>
                    </div>
                `
            })
            //复合组件
            Vue.component("my-login",{
                data:function(){
                    return {
                        uname:"用户名",
                        upwd:"密码",
                        login:"登录",
                        register:"注册"
                    }
                },
                template:`
                    <div>
                    <my-label v-bind:myLabel="uname"></my-label>
                    <my-input></my-input>
                    <my-label v-bind:myLabel="upwd"></my-label>
                    <my-input></my-input>
                    <my-button v-bind:myButton="login"></my-button>    
                    <my-button v-bind:myButton="register"></my-button>
                    </div>
                `
            })
            new Vue({
                el:"#container",
                data:{
                    msg:"Hello VueJs"
                }
            })
        </script>
     </body>
    </html>
    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <script src="js/vue.js"></script>
        <title></title>
    </head>
    <body>
    
    <div id="container">
        <my-login></my-login>
    </div>
    
    <script>
    
        Vue.component('my-label',{
            props:['labelName'],
            template:'<label>{{labelName}}</label>'
        })
        Vue.component('my-input',{
            props:['tips'],
            template:'<input type="text" :placeholder="tips"/>'
        })
        Vue.component('my-button',{
            props:['btnName'],
            template:'<button>{{btnName}}</button>'
        })
    
        Vue.component('my-login',{
            template:`
            <form>
                <my-label labelName="用户名"></my-label>
                <my-input tips="请输入用户名"></my-input>
                <br/>
                <my-label labelName="密码"></my-label>
                <my-input tips="请输入密码"></my-input>
                <br/>
                <my-button btnName="登录"></my-button>
                <my-button btnName="注册"></my-button>
            </form>
            `
        })
    
    
        new Vue({
            el: '#container',
            data: {
                msg: 'Hello Vue'
            }
        })
    </script>
    
    </body>
    </html>

     要拿到data中的数据就要v-bind,否则就不用

  • 相关阅读:
    nacos 配置优先级
    spring cloud 依赖查询
    树-数据结构
    CI/CD + docker 综合实战
    CICD:CentOS 下 Jenkins 安装
    生产环境 OOM 与 GC 问题的处理思路
    如何优雅的进行接口管理
    合并多个Execl 电子表格 java poi
    深入了解数据导入的一些解决方案
    浅谈导出Execl的报表数据解决方案
  • 原文地址:https://www.cnblogs.com/wangruifang/p/7770970.html
Copyright © 2020-2023  润新知