VueComponent

VueComponent动态组件切换时候的一个坑

<div id="app">
	<button type="button" 
            @click="currentCompoent = $options.components.test1"
    >test1</button>
	<button type="button" 
            @click="currentCompoent = $options.components.test2"
    >test2</button>
	<button type="button" 
            @click="currentCompoent = $options.components.test3"
    >test3</button>
	<component :is="currentCompoent"></component>
</div>
<script type="text/javascript">
			Vue.config.productionTip = false
			const test1 = {
				template:`
				<div id="test1">
					<h2>test1</h2>
				</div>
				`
			}
			const test2 = {
				template:`
				<div id="test2">
					<h2>test2</h2>
				</div>
				`
			}
			const test3 = {
				template:`
				<div id="test3">
					<h2>test3</h2>
				</div>
				`
			}
			const app = new Vue({
				el:"#app",
				data:{
					currentCompoent:test1
				},
				components:{
					test1,
					test2,
					test3
				},
				methods:{
					testChange1(){
						// this.currentCompoent = test1
						this.currentCompoent = this.$options.components.test1
					},
					testChange2(){
						// this.currentCompoent = test2
						this.currentCompoent = this.$options.components.test2
					},
					testChange3(){
						// this.currentCompoent = test3
						this.currentCompoent = this.$options.components.test3
					}
				}
			})
</script>

Vue官网上是写着,currentCompoen可以是一个已注册的组件名字或者组件的选项对象。

在HTML模板里面访问不到配置项中的components,@click="currentComponent = test1",切换的时候会报错,从Vue实例身上取$options.components.test1即可正确拿到test1这个组件。

Vue实例上的data和methods也访问不到components中的注册的组件,拿到的是外部定义的test1,可以通过this.$options.components.xxx拿到components上的组件(当然直接拿到全局定义的组件的选项对象也能正确切换)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值