vue切换组件基础模板

需求:登录注册两个按钮,点击登录的时候登录显示,点击注册的时候注册显示,另外一个隐藏

如下图所示先定义两个template组件

复制代码
    <template id="login">
        <div>
            <h2>用户登录</h2>
            <p>
                用户名:<input type="text" v-model="username">
            </p>
            <p>&emsp;码:<input type="password" v-model="userPwd">
            </p>
            <p>
                <button @click="toLogin">&emsp;</button>
            </p>
        </div>
    </template>
    <template id="register">
        <div>
            <h2>用户登录</h2>
            <p>
                用户名:<input type="text" v-model="username">
            </p>
            <p>&emsp;码:<input type="password" v-model="userPwd">
            </p>
            <p>&emsp;别:
                <label for="">
                    <input type="radio" name="sex" v-model="sex"></label>
                <label for="">
                    <input type="radio" name="sex" v-model="sex"></label>
            </p>
            <p>
                <button @click="toReg">&emsp;</button>
            </p>
        </div>
    </template>
复制代码

并且在各自的组件中进行初始化数据,

复制代码
 <script>
        // 注册组件的模板
        Vue.component('login', {
            template:'#login',
            data () {
                return {
                    username:'',
                    userPwd:''
                }
            },
            methods: {
                toLogin(){
                    console.log('要提交的登录数据'+this.username + this.userPwd);
                }
            }
        })

        Vue.component('register', {
            template:'#register',
            data () {
                return {
                    username:'',
                    userPwd:'',
                    sex:'',
                }
            },
            methods: {
                toReg(){
                    console.log('要提交的注册数据'+this.username + this.userPwd);
                }
            }
        })
        let vm = new Vue({
            el : "#app",
            data : {
                flag:true,
            }
        })
    </script>
复制代码

我们使用v-if 和else-if来进行控制两个标签的切换:

    <div id="app">
        <a @click.prevent="flag=true" href="">登录</a>  注意:这里的prevent是阻止默认事件,如果不这样子页面会刷新一下,有问题
        <a @click.prevent="flag=false" href="">注册</a>
        <login v-if="flag"></login>
        <register v-else></register>
    </div>

利用component元素实现组件切换  暂不写

<component :is="组件名称"></component>
 
posted @   洛飞  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示