1、刚写了一篇有关地址管理页面的总结,其中有如何判断多个radio中哪一个radio被checked和实现点击radio以后选中或取消,有兴趣的可以看下:判断多个radio中哪个被checked,网上有很多Vue.js使用v-for和v-if在多个select中判断哪一个option被选中的例子,但是不是特别的详细,其实select和radio原理上实现方式是大体是相同的,趁着手热,下面就来继续做一个小demo来记录一下。

2、思路:首先通过v-for循环将数据添加到select中,并为元素添加一个value属性,将能区分selected哪个option的数据添加到value中(我们这里是将每个option的id存放到value中),这个值方便我们后期判断我们到底选中了哪个option,再为元素添加@change事件,当select改变时会调用@change方法,然后并将当前selected的option的dom对象以参数的形式传递到method中(我们这里是changeVal方法),在方法中将id赋值给data中selOption(说明当前id的option被选中了),然后通过v-model来将data中的selOption、select和下面div中的显示数据同步(这步是为了在页面上显示数据,其实不要也罢,看实际需求)。

3、demo代码:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title></title>
	<script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
</head>
<body>
	<div id="div">
		<select @change="changeVal($event)" v-model="selOption">
			<template v-for="(site,index) in sites" :key="index">
				<option :value="site.id">{{site.name}}</option>
			</template>
		</select>
		<div>您选中了:{{selOption}}</div>
	</div>
</body>
<script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script>
<script src="https://cdn.staticfile.org/vue-resource/1.5.1/vue-resource.min.js"></script>
<script>
	var vm = new Vue({
		el:"#div",
		data:{
			selOption: "",
			sites: [
				{id:1,name:"北京"},
				{id:2,name:"上海"},
				{id:3,name:"广州"},
				{id:4,name:"深圳"},
				{id:5,name:"吉林"}
			]
		},
		methods:{
			changeVal:function(event){
				this.selOption = event.target.value;
				alert("你选中了"+this.selOption);
			}
		}
	})
</script>
</html>

4、说明:
1)这里的data中的数据是写死的,实际开发中应该使用mounted来声明一个方法,然后在方法中通过ajax去后端获取并赋值到data中,实现数据为动态数据。
2)还有就是Vue.js是通过$event的方式来传递当前元素的dom对象,并在方法中以event参数的形式接受,并以event.target的方式使用该对象。

你要去做一个大人,不要回头,不要难过。

“你为什么皱着眉头呀,不开心嘛,能不能跟我说说呢。”

Logo

前往低代码交流专区

更多推荐