这里,我用一个注册登录两组件的切换实例来演示:
切换方式一
<!DOCTYPEhtml>
<htmllang="zh-CN">
<head>
<metacharset="UTF-8"/>
<title>独秀不爱秀</title>
</head>
<body>
<divid="app">
<ahref="#"@click.prevent="flag=true">登录</a>
<ahref="#"@click.prevent="flag=false">注册</a>
<!--默认显示登录组件-->
<loginv-if="flag"></login>
<registerv-else="flag"></register>
</div>
<scriptsrc="./lib/vue-2.4.0.js"></script>
<scripttype="text/javascript">
Vue.component('login',{
template:'<h3>登录组件</h3>'
});
Vue.component('register',{
template:'<h3>注册组件</h3>'
});
constvm=newVue({
el:'#app',
data:{
flag:true
},
});
</script>
</body>
</html>
这个方式唯一的缺陷就是只能在两个组件之前切换,当要求需要三个及三个以上的组件切换的时候,这就不行了(原因是flag只有true和false两个值),这就要要使用方式二了。
切换方式二
这里,我们需要学到一个Vue官方提供的元素component。
<!DOCTYPEhtml>
<htmllang="zh-CN">
<head>
<metacharset="UTF-8"/>
<title>独秀不爱秀</title>
</head>
<body>
<divid="app">
<ahref="#"@click.prevent="comName='login'">登录</a>
<ahref="#"@click.prevent="comName='register'">注册</a>
<!--
Vue提供的component来展示对应名称的组件
component是一个占位符
:is属性指定组件名称
-->
<component:is="comName"></component>
</div>
<scriptsrc="./lib/vue-2.4.0.js"></script>
<scripttype="text/javascript">
//组件名称是字符串
Vue.component('login',{
template:'<h3>登录组件</h3>'
});
Vue.component('register',{
template:'<h3>注册组件</h3>'
});
constvm=newVue({
el:'#app',
data:{
comName:'login'//当前component中的:is绑定的组件名称
},
});
</script>
</body>
</html>
现在,我们在添加一个退出组件(这是为了证明第二种组件切换方式的好处)
<!DOCTYPEhtml>
<htmllang="zh-CN">
<head>
<metacharset="UTF-8"/>
<title>独秀不爱秀</title>
</head>
<body>
<divid="app">
<ahref="#"@click.prevent="comName='login'">登录</a>
<ahref="#"@click.prevent="comName='register'">注册</a>
<ahref="#"@click.prevent="comName='out'">退出</a>
<!--
Vue提供的component来展示对应名称的组件
component是一个占位符
:is属性指定组件名称
-->
<component:is="comName"></component>
</div>
<scriptsrc="./lib/vue-2.4.0.js"></script>
<scripttype="text/javascript">
//组件名称是字符串
Vue.component('login',{
template:'<h3>登录组件</h3>'
});
Vue.component('register',{
template:'<h3>注册组件</h3>'
});
Vue.component('out',{
template:'<h3>退出组件</h3>'
});
constvm=newVue({
el:'#app',
data:{
//默认显示登录组件
comName:'login'//当前component中的:is绑定的组件名称
},
});
</script>
</body>
</html>
切换成功。
如果您觉得本文的内容对您的学习有所帮助:
关键字:
html