Vue中V-model绑定控件表单

V-model绑定单行文本框

<div id="app">
			<p>多行文本框</p>
			<textarea v-model="msg" placeholder="请输入此处进行编辑"/></textarea>
			<p style="white-space: pre;">{{msg}}</p>
		</div>
		<script>
			var vm=new Vue({
				el:"#app",
				data:{
					msg:""
				}
			})
		</script>

V-model绑定多选框,实现全选 全不选 反选

定义三个数组,两个空数组,一个加入所有选择的value,全选时候让其中一个空数组等于全数组,全不选让数组等于空数组。

<div id="exmaple">
			<input type="checkbox" v-model="checkNames" value="上网" />
			<label for="net">上网</label>
			<input type="checkbox" v-model="checkNames" value="旅游" />
			<label for="tourism">旅游</label>
			<input type="checkbox" v-model="checkNames" value="看书" />
			<label for="book">看书</label>
			<input type="checkbox" v-model="checkNames" value="电影" />
			<label for="movie">电影</label>
			<input type="checkbox" v-model="checkNames" value="游戏" />
			<label for="game">游戏</label>
			<p v-if="checked">
				你的兴趣爱好:{{result}}
			</p>
			<p>
				<button @click="allChecked">全选</button>
				<button @click="reverseChecked">反选</button>
				<button @click="noChecked">全不选</button>
			</p>

		</div>
		<script>
			var vm = new Vue({
				el: "#exmaple",
				data: {
					checked: false,
					checkNames: [],
					checkedArr: ["上网", "旅游", "看书", "电影", "游戏"],
					temArr: []
				},
				computed: {
					result: function() {//获取所有爱好
						var show = '';
						for (var i = 0; i < this.checkNames.length; i++) {
							show += this.checkNames[i] + ' ';
						}
						return show;
					}
				},
				methods: {
					allChecked: function() {
						this.checkNames = this.checkedArr;
					},
					noChecked: function() {
						this.checkNames = [];
					},
					reverseChecked: function() {
						this.temArr = [];
						for (var i = 0; i < this.checkedArr.length; i++) {
							if (!this.checkNames.includes(this.checkedArr[i])) {
								this.temArr.push(this.checkedArr[i]);
							}
						}
						this.checkNames = this.temArr;
					}
				},
				watch: {
					"checkNames": function() {
						console.log(this.checkNames)
						if (this.checkNames.length > 0) {
							this.checked = true;
						} else {
							this.checked = false;
						}
					}
				}

			})
		</script>

绑定单选框

	<div id="exmaple">
			<h2>查话费流量</h2>
			<input type="radio" v-model="type" value="balance" />
			<label for="balance">查话费</label>
			<input type="radio" v-model="type" value="traffic" />
			<label for="traffic">查流量</label>
			<input type="button" v-on:click="check" value="查询" />
			<p v-if="show">
				{{msg}}
			</p>
		</div>
		<script>
			var vm = new Vue({
				el: "#exmaple",
				data: {
					type: '',
					show: false,
					msg: ''
				},
				methods: {
					check: function() {
						this.show = true;
						if (this.type == 'balance') {
							this.msg = "你的余额为6.66"
						} else if (this.type == 'traffic') {
							this.msg = "你的余额为9.66"
						} else {
							this.msg = "请输入查询类别"
						}
					}

				}
			})
		</script>

绑定双向下拉列表

		<div id="app" style="display: flex;justify-content: space-around;align-items: center;width: 400px;">
			<div class="left">
				<span>可选职位</span>
				<select size="6" multiple="multiple" v-model="job">
					<option v-for="value in joblist" :value="value">{{value}}</option>
				</select>
			</div>
			<div class="middle" >
				
				<input type="button" value=">>" @click="toMyjob" style="display: block;"/>
				<input type="button" value="<<" @click="tojob" style="display: block;"/>
			</div>
			<div class="right">
				<span>已选职位</span>
				<select size="6" multiple="multiple" v-model="job">
					<option v-for="value in myjoblist" :value="value">{{value}}</option>
				</select>
			</div>
		</div>
		<script>
			var vm=new Vue({
				el:"#app",
				data:{
					joblist:['歌手','演员','酒店管理','教师','公务员','公司','公司支援'],
					myjoblist:[],
					job:[],
				},
				methods:{
					toMyjob:function(){
						for(var i=0;i<this.job.length;i++){
							this.myjoblist.push(this.job[i]);//选中的添加到右边数组中
							var index=this.joblist.indexOf(this.job[i]);//获取选中的下标
							this.joblist.splice(index,1);//右边移除
						}
						this.job=[];//清空选中数组
					},
					tojob:function(){
						for(var i=0;i<this.job.length;i++){
							this.joblist.push(this.job[i]);
							var index=this.myjoblist.indexOf(this.job[i]);
							this.myjoblist.splice(index,1);
						}
						this.job=[];
					}
				}
			})
		</script>

绑定地区选择的三个下拉列表

<div id="app">
			<select v-model="province">
				<option value="">请选择</option>
				<option v-for="item in provinces">{{item}}</option>
			</select>
			<select v-model="city">
				<option value="">请选择</option>
				<option v-for="item in citys">{{item}}</option>
			</select>
			<select v-model="district">
				<option value="">请选择</option>
				<option v-for="item in districts">{{item}}</option>
			</select>
		</div>
		<script>
			var vm = new Vue({
				el: "#app",
				data: {
					province: '',
					city: '',
					district: '',
					addressData: {
						'黑龙江': {
							'哈尔滨市': {
								'道理区': {},
								'南港区': {}
							},
							'齐齐哈尔市': {
								'龙沙区': {},
								'建华区': {}
							}
						},
						'吉林省': {
							'长沙市': {
								'朝阳区': {},
								'南关区': {}
							},
							'吉林市': {
								'船营区': {},
								'龙潭区': {}
							}
						},
						'辽宁省': {
							'沈阳市': {
								'和平区': {},
								'沈河区': {}
							},
							'大连市': {
								'中山区': {},
								'金州区': {}
							}
						}

					}
				},
				watch: {
					province: function(newValue, oldValue) {
						if (newValue !== oldValue) {
							this.city = '';
						}
					},
					city : function(newValue, oldValue) {
						if (newValue !== oldValue) {
							this.district = '';
						}
					}
				},
				computed: {
					provinces: function() {
						if (!this.addressData) {
							return;
						}
						var pArr = [];
						for (var key in this.addressData) {
							pArr.push(key)
						}
						return pArr;
					},
					citys: function() {
						if (!this.addressData || !this.province) {
							return;
						}
						var cArr = [];
						for (var key in this.addressData[this.province]) {
							cArr.push(key);
						}
						return cArr;
					},
					districts: function() {
						if (!this.addressData || ! this.city) {
							return;
						}
						var dArr = [];
						for (var key in this.addressData[this.province][this.city]) {
							dArr.push(key);
						}
						return dArr;
					}
				}
			})
		</script>