vue小練習

這一次小練習主要複習了vue組件,自定義事件和watch屬性監聽方面的知識。

效果圖如下:


html部分代碼:

<div id="main">
		<input type="text" name="" value="請輸入編輯的內容" v-model="val">
		<span class="Btn" class="btn" v-on:click="add">添加</span>
		<br><br>
		<span class="Btn" v-if="edit_judge">{{index+1}}</span><input type="text" name="" v-if="edit_judge" v-model="edit_content">
		<br>
		<ul>
			<record v-for="(item,index) in words" 
					:mes="item"
					:index="index"
					v-on:deliver="Del"
					v-on:deliver_edit="Edit">
			</record>
		</ul>
		<br><br>
		<span class="Btn">總計有{{words.length}}條數據</span>
	</div>

js部分:

<script type="text/javascript">
		Vue.component("record",{
			props:["mes","index"],
			template:"<li>{{mes}}<a class='btn' v-on:click='del'>刪除</a><a class='btn' v-on:click='edit'>{{text}}</a></li>",
			data(){
				return{
					text:"編輯"
				}
			},
			methods:{
				del(){
					this.$emit("deliver",this.index);
				},
				edit(){
					this.$emit("deliver_edit",this.index,this.text);
					if (this.text=="編輯") {
						this.text="確認";
					}else{
						this.text="編輯";
					}
				}
			}
		});
		new Vue({
			el:"#main",
			data:{
				words:[],
				val:"",
				edit_judge:false,
				edit_content:"",
				index:0
			},
			methods:{
				add(){
					if (this.val=="") {
						alert("內容不能爲空!");
						return;
					}
					this.words.push(this.val);
					this.val="";
				},
				Del(i){
					this.words.splice(i,1);
				},
				Edit(i,txt){
					this.edit_content="";
					this.index=i;
					if (txt=="編輯") {
						this.edit_judge=true;
					}else{
						this.edit_judge=false;
					}
				}
			},
			watch:{
				edit_content(val){
					if (val!="") {
						this.words[this.index]=val;
					}
				}
			}
		});
	</script>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章