Vue表单&局部组件

目录

1. Vue表单 

2. 局部组件 


1. Vue表单 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>表单</title>
		<link href="https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.9/theme-chalk/index.css" rel="stylesheet">
		<!-- 引入Vue.js文件 -->
		<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
		<script src="https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.9/index.js"></script>
	</head>
	<body>
		<div id="form">
			<h2>{{msg}}</h2>
			<div>
				<label>账号:<input type="text" v-model.trim="name" /></label>
				
			</div>
			<div>
				<label>密码:<input type="password" v-model="pwd" /></label>
			</div>
			<div>
				<label>年龄:<input type="text" v-model.number="age" /></label>
			</div>
			<div>
				<label>性别:<input type="radio" v-model="sex" value="0" />男</label>
				<label><input type="radio" v-model="sex" value="1" />女</label>
			</div>
			<div>
				<label>爱好:</label>
				<div v-for="h in hobbies">
					<input type="checkbox" v-model="hobb" :value="h"/>{{h}}
				</div>
			</div>
			<div>
				<label>地址:
					<div>
						<!-- <select v-model="addr">
							<option v-for="a in address" :value="a.cname">{{a.cname}}</option>
						</select> -->
						<el-select v-model="addr" placeholder="请选择城市">
							<el-option v-for="a in address" :key="a.cid" :lable="a.cname" :value="a.cname">{{a.cname}}</el-option>
						</el-select>
					</div>
				</label>
			</div>
			<div>
				<label>备注:
					<div>
						<textarea v-model="bz"></textarea>
					</div>
				</label>
			</div>
			<div>
				<input type="button" v-on:click="submit" value="提交"/>
			</div>
		</div>
	</body>
	<script>
		//实例一个vue
		new Vue({
			el:"#form",//挂载区域
			data:function(){//属性
				return {
					msg:"Vue表单提交",
					name:null,
					pwd:null,
					sex:0, //0男,1女
					hobbies:["洗脚","按摩","打牌","敲代码"],
					hobb:[],
					address:[
						{cid:1,cname:"长沙"},
						{cid:2,cname:"麻阳"},
						{cid:3,cname:"怀化"},
						{cid:4,cname:"凤凰"}
					],
					addr:null,
					bz:null,
					age:null
					
				}
			},
			methods:{//方法
				submit:function(){
					var data={
						name:this.name,
						pwd:this.pwd,
						sex:this.sex,
						hobb:this.hobb,
						addr:this.addr,
						bz:this.bz,
						age:this.age
					}
					console.info(data)
				}
			}
		})
	</script>
</html>

2. 局部组件 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>局部组件</title>
		<link href="https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.9/theme-chalk/index.css" rel="stylesheet">
		<!-- 引入Vue.js文件 -->
		<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
		<script src="https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.9/index.js"></script>
	</head>
	<body>
		<div id="form">
			<h2>局部组件</h2>
			<button-counter frist-name="给李鑫一个大鼻窦" @a-b="abc"></button-counter>
		</div>
	</body>
	<script>
		//实例一个vue
		new Vue({
			el:"#form",//挂载区域
			data:function(){//属性
				return {
					count:0
					
				}
			},
			methods:{//方法
				abc:function(msg){
					this.count=msg;
					console.info("abc...")
					console.info("count=%i",this.count)
				}
			},
			components:{//局部组件
				'button-counter':{
					props:["fristName"],
					template:'<div><button @click="oncThree">局部组件{{msg}}</button></div>',
					data:function(){
						return {
							msg:0
						}
					},
					methods:{
						onc:function(){
							this.msg++;
							console.info("msg=%i",this.msg)
						},
						oncThree:function(){
							this.msg++;
							if(this.msg%3==0){
								console.info("msg=%i",this.msg)
								//触发事件,往父组件传值
								this.$emit("a-b",this.msg) 
								console.info(this.fristName)
							}
						}
					}
				}
			}
		})
	</script>
</html>

 注1:Vue自定义事件是为组件间通信设计   
        vue中父组件通过prop传递数据给子组件,而想要将子组件的数据传递给父组件,则可以通过自定义事件的绑定
     
        父Vue实例->Vue实例,通过prop传递数据
        子Vue实例->父Vue实例,通过事件传递数据 

   注2:事件名
        不同于组件和prop,事件名不存在任何自动化的大小写转换。而是触发的事件名需要完全匹配监听这个事件所用的名称
        建议使用“短横线分隔命名”,例如:three-click

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值