1. 程式人生 > 實用技巧 >vue checkbox 布林值互轉01

vue checkbox 布林值互轉01

vue checkbox 布林值互轉01

note

vue checkbox和資料進行繫結後(v-model),只能對應true、false布林值型別,checkbox v-model=0 or 1是不可行。所以只能轉換了,獲取資料填充到checkbox時01->bool,提交資料給後臺時bool->01

code

小案例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>vue lx</title>
<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js?a=111"></script>
</head>
<body>
<div id="app">
	<form>
		<ol>
		<li v-for="item in goods"> 
		  <span>{{ item.title }}</span>
		  <input type="checkbox" id="is_new" v-model="item.is_new">
		  <label for="checkbox">{{ item.is_new }}</label>
		  <input type="checkbox" id="is_nb" v-model="item.is_nb">
		  <label for="checkbox">{{ item.is_nb }}</label>
		</li>
	  </ol>
		  <button class="" @click="onSubmit($event)">提交</button>
	</form>
</div>

<script>
new Vue({
	el: '#app',
	data: {
		goods: []
	},
	mounted(){ //html載入完成後執行
		this.inner();
	},
	methods: {
		inner(){ //初始化,填充資料
			//--請求,獲取資料
			//this.$http.get('/goods/basic', {
			//}).then((res) => {
			//})
			
			//--獲取資料,將01->布林值
			var tmp_goods = [
				{title:'西瓜',is_new:0,is_nb:1},
				{title:'南瓜',is_new:0,is_nb:1},
				{title:'冬瓜',is_new:0,is_nb:1}
			]
			tmp_goods.forEach(function(item,index){
				tmp_goods[index].is_new = (tmp_goods[index].is_new==1) ? true : false;
				tmp_goods[index].is_nb = (tmp_goods[index].is_nb==1) ?  true : false;
			})
			this.goods = tmp_goods;
		},
		onSubmit(event) {
		  event.preventDefault();//阻止元素髮生預設的行為,即阻止表單提交
		  
			//--提交資料,將布林值->01
		  let data = this.clone(this.goods);
		  for(var index in data){
			data[index].is_new = (data[index].is_new) ? 1 : 0;
			data[index].is_nb = (data[index].is_nb) ?  1 : 0;
		  }
		  console.dir(data);
		},
		clone(myObj) {	//自定義克隆物件方法
			if(typeof(myObj) != 'object') return myObj; 
			if(myObj == null) return myObj; 
			var myNewObj = new Object(); 
			for(var i in myObj) myNewObj[i] = this.clone(myObj[i]); 
			return myNewObj; 
		} 
	}
})
</script>
</body>
</html>