动态组件
案列:1
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<div id="app">
<button @click = "typeChange"> 点击 </button>
<keep-alive>
<component :is = "type"></component>
</keep-alive>
</div>
<template id="hello-box">
<div>
<h3> 手机号登录 </h3>
<div> 123 </div>
</div>
</template>
</body>
<script src="../../person/vue.js"></script>
<script>
/*
业务: 点击开关切换两个组件
template写在实例范围内,会被直接解析,并且将来不会在html结构中出现
template模板内直接子元素有且仅有一个
Vue提供了一个 component 组件
通过keep-alive组件实现动态组件的缓存,加快组件的切换速度
*/
new Vue({
el: '#app',
data: {
type: 'PhoneLogin'
},
methods: {
typeChange () {
// this.type = this.type === 'PhoneLogin' ? 'UserLogin': 'PhoneLogin'
this.type = (this.type === 'PhoneLogin') && 'UserLogin' || 'PhoneLogin'
}
},
components: {
'PhoneLogin': {
template: '#hello-box'
},
'UserLogin': {
template: '<div> 用户名密码登录</div>'
}
}
})
</script>
</html>
案列:2
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<div id="app">
<Head></Head>
<Content></Content>
<tab-bar></tab-bar>
</div>
<template id="hello-box">
<div>
<h3> 手机号登录 </h3>
<div> 123 </div>
</div>
</template>
<template id="hello-box">
<div>
<h3> 手机号登录 </h3>
<div> 123 </div>
</div>
</template>
<template id="hello-box">
<div>
<h3> 手机号登录 </h3>
<div> 123 </div>
</div>
</template>
</body>
<script src="../../lib/vue.js"></script>
<script>
/*
业务: 点击开关切换两个组件
template写在实例范围内,会被直接解析,并且将来不会在html结构中出现
template模板内直接子元素有且仅有一个
Vue提供了一个 component 组件
通过keep-alive组件实现动态组件的缓存,加快组件的切换速度
*/
new Vue({
el: '#app',
data: {
type: 'PhoneLogin'
},
methods: {
typeChange () {
// this.type = this.type === 'PhoneLogin' ? 'UserLogin': 'PhoneLogin'
this.type = (this.type === 'PhoneLogin') && 'UserLogin' || 'PhoneLogin'
}
},
components: {
'PhoneLogin': {
template: '#hello-box'
},
'UserLogin': {
template: '<div> 用户名密码登录</div>'
}
}
})
</script>
</html>