v-model组件, 动态组件

1.v-model组件

<div id="app">
			1. 触发父组件事件,传数据给父组件, 来修改username, 可以自定义事件属性名
			<input-dom :username="username" @input-parent="changeEvent"></input-dom>
			2.直接改值可以自定义事件属性名
			<input-dom :username="username" @input-parent="username=$event"></input-dom>
			3.v-model ,this.$emit('input', $event.target.value) 必须要为input
			<input-dom v-model="username"></input-dom>
			<h3>{{username}}</h3>
		</div>

		<script>
			Vue.component('input-dom',{
				props:["username"],
				template: `<input type="text" @input="change" :value="username">`,
				methods: {
					change:function($event) {
						// console.log($event);
						this.$emit('input-parent', $event.target.value)//把input设置为触发的事件, $event.target.value是参数 子组件数据传值到父组件
						//this.$emit('input', $event.target.value)//直接使用v-model,要用input作为触发
					}
				}
			})
			let app = new Vue({
				el: '#app',
				data: {
					username: ""
				},
				methods: {
					changeEvent: function(data) {
						// console.log(data)获取到子组件的数据
						this.username = data
					}
				}
			})
			</script>

在这里插入图片描述

2.动态组件

按钮可以切换对相应的组件, component标签, 改变is属性的组件名或者对象名
	<div id="app">
			<component :is="com"></component>
			<button @click="changePage(1)">首页</button>
			<button @click="changePage(2)">列表</button>
			<button @click="changePage(3)">新闻</button>
			<button @click="changePage(4)">个人</button>
		</div>
		<script>
			let com1 = Vue.component('index-com', {
				name: "com1",
				template: `<h1>首页</h1>`
			})
			let com2 = Vue.component('list-com', {
				template: `<h1>列表</h1>`
			})
			let com3 = Vue.component('news-com', {
				template: `<h1>新闻</h1>`
			})
			let com4 = Vue.component('person-com', {
				template: `<h1>个人</h1>`
			})
			var app = new Vue({
				el: '#app',
				data: {
					com: 'com1'
				},
				methods:{
					changePage(page) {
						// this.com = "com" + page
						this.com = this.$options.components['com'+page] //已注册组件的对象
					}
				},
				components: {
					com1,com2,com3,com4
				}
			})
		</script>

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值