[IMWeb训练营作业]基于vue实现的select组件

整体描述:

该demo是基于vue封装的select组件。父组件向子组件传递数据使用props;子组件向父组件传递信息通过$emit触发自定义事件。

效果预览:

可运行demo

github上完整代码--传送门


核心代码:

<script type="text/javascript">
	var vm = new Vue({
		el:'#app',
		data:{
			list:["html5+css3","html+css","Vue","jq","js"],
			list2:["睡觉",'吃饭','上课']
		},
		components:{
			'select-part': {//select-part组件
				props:['use','list'],
				data:function() {
					return {showOption:false,
							val:""							
					}
				},
				template:`<div class="wrap">
								<div class="select">
									<div class="select-input">
										<input type="text" v-model="val"/>
										<label @click="showOption=!showOption">{{use}}</label>
									</div>
									<options v-show="showOption" :list="list" @changeVal="getVal"></options>
								</div>
						</div>`,
				methods:{
					getVal(item) {
						console.log("111");
						this.val = item;
					}
				},
				components:{
					'options':{//options组件
						props:["list"],
						template:`<ul class="options">
									<li v-for="item in list" @click="changeVal(item)">{{item}}</li>
								 </ul>`,
						methods:{
							changeVal(item) {
								this.$emit("changeVal",item)
							}
						}
					}
				}
			}
		}
	});
</script>


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值