vue.事件修飾符的事件控制,v-model數據雙向綁定


 

事件默認冒泡:

當點擊按鈕,先觸發點擊按鈕事件,再向上層冒泡

<body>
	<div id="app">
		<div class="inner" @click='divhandle'>
		<input type="button" value="戳我" @click='btnhandle'>
		</div>
	</div>
	<script >
		var vm = new Vue({
			el:'#app',
			data:{
				
			},
			methods:{
				divhandle(){
					console.log('觸發點擊inner事件');
				},
				btnhandle(){
					console.log('觸發點擊btn事件');
				}
			}
		})
	</script>
</body>

  

事件修飾符

  • .stop阻止冒泡
    <div class="inner" @click='divhandle'>
    		<input type="button" value="戳我" @click.stop='btnhandle'>
    		</div>
    

      

 

 

 

  • .prevent阻止默認事件

<div id="app">
		<!-- <div class="inner" @click='divhandle'>
		<input type="button" value="戳我" @click.stop='btnhandle'>
		</div> -->
		<a href="http://www.baidu.com" @click.prevent='linkclick'>百度</a>
	</div>
	<script >
		var vm = new Vue({
			el:'#app',
			data:{
				
			},
			methods:{
				divhandle(){
					console.log('觸發點擊inner事件');
				},
				btnhandle(){
					console.log('觸發點擊btn事件');
				},
				linkclick(){
					console.log('觸發鏈接點擊事件');
				},
			}
		})
	</script>

  

 阻止a標簽的默認跳轉行為

  • .capture 添加事件偵聽器使用事件捕獲模式
<div class="inner" @click.capture='divhandle'>
		<input type="button" value="戳我" @click.stop='btnhandle'>
		</div>
//事件從外到里

  

 

 

 

  • .self只當事件在元素本身(比如本身子元素)觸發時觸發回調
<div class="inner" @click.self='divhandle'>
		<input type="button" value="戳我" @click.stop='btnhandle'>
		</div>
//只有點擊inner塊自身才觸發divhandle事件,點擊button時不觸發divhandle事件

  

 

 

 

  • .once事件只觸發一次
<a href="http://www.baidu.com" @click.prevent.once='linkclick'>百度</a>
//只觸發一次事件處理函數,包括prevent事件,click.once.prevent也一樣

  .stop和.self

兩個都有阻止冒泡的效果,但是stop阻止所有冒泡,self只阻止當前元素冒泡,不影響其它冒泡

例如,outer-inner-button三層,在button @click.stop,只發生button事件,阻止冒泡,不發生outer,inner的click事件;

在inner @click.self,點擊button,只發生button和outer事件。

v-modle和雙向數據綁定

<div id="app">
		<h4>{{msg}}</h4>
		<input type="text" v-bind:value="msg">
	</div>
	<script >
		var vm = new Vue({
			el:'#app',
			data:{
				msg:'敲代碼啦'
			},
			methods:{
				
			}
		})
	</script>

  v-bind只能實現數據單向綁定,從M綁定到V,無法實現雙向綁定

<div id="app">
		<h4>{{msg}}</h4>
		<input type="text" style='width: 100%;' v-model="msg">
</div>
	<script >
		var vm = new Vue({
			el:'#app',
			data:{
				msg:'敲代碼啦'
			},
			methods:{
				
			}
		})
	</script>

  使用v-model可以實現表單元素和model中數據的雙向綁定

注意:v-model只能運用在表單元素中

input(radio,text,address,email...

select

checkbox

textarea

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM