欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue在標(biāo)簽中如何使用(data-XXX)自定義屬性并獲取

 更新時(shí)間:2022年08月11日 09:31:09   作者:A黃俊輝A  
這篇文章主要介紹了vue在標(biāo)簽中如何使用(data-XXX)自定義屬性并獲取,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

在標(biāo)簽中使用(data-XXX)自定義屬性并獲取

我們?cè)趘ue中有時(shí)候?yàn)榻o標(biāo)簽加一些特有的屬性, 當(dāng)我們?cè)跇?biāo)簽上觸發(fā)了事件之后, 就可以在 event 對(duì)象上面獲取

標(biāo)簽的寫法

<div class="menu-item" @click="clickMenu('參數(shù)一',$event)" :data-mytype="1">
? <van-image :src="aaa"></van-image>
? <span>{{ item.title }}</span>
</div>

上面的 @click 的函數(shù)中, 如果要傳入事件參數(shù), 必須使用 $event ,這是固寫的,不能變

當(dāng)我們觸發(fā)了這個(gè)事件, 要在事件中得到 data-mytype的自定義屬性, 有兩種方法

方法一

methods:{
clickMenu(param1,event){
console.log(param1);//參數(shù)一
let mytype = event.currentTarget.dataset.mytype;
}
}

方法二

methods:{
clickMenu(param1,event){
console.log(param1);//參數(shù)一
let mytype = event.currentTarget.getAttribute("data-mytype");
}
}

網(wǎng)上有很多使用 event.srcElement 這個(gè)的已經(jīng)過(guò)時(shí)了, 并且得不到想要的值, 上面兩種方式就可以解決

兩種方法的區(qū)別在于, 方法二更為通用一些,只要是標(biāo)簽上的屬性, 不管是不是以“data-” 開(kāi)頭的都可以獲取到, 而方法一, 只有在屬性是以 “data-” 開(kāi)頭的才可以接收到 

vue基礎(chǔ)-自定義指令

v-on、v-bind、v-once等都是Vue內(nèi)置指令,拿來(lái)就能用。

但他們的功能有時(shí)不能滿足我們。

這時(shí)我們就需要自定義一個(gè)指令,就像自定義一個(gè)函數(shù)一樣,完成我們想要做的事情。

模擬兩個(gè)需求,通過(guò)案例,對(duì)自定義指令的語(yǔ)法進(jìn)行了解

需求1:

  • 定義一個(gè)v-big指令,和v-text功能類似,但會(huì)把綁定的數(shù)值放大10倍。

需求2:

  • 定義一個(gè)v-fbind指令,和v-bind功能類似,但可以讓其所綁定的input元素默認(rèn)獲取焦點(diǎn)。

語(yǔ)法

<div id="root">
	<h2>{{name}}</h2>
	<h2>當(dāng)前的n值是:<span v-text="n"></span> </h2>
	<!-- <h2>放大10倍后的n值是:<span v-big-number="n"></span> </h2> -->
	<h2>放大10倍后的n值是:<span v-big="n"></span> </h2>
	<button @click="n++">點(diǎn)我n+1</button>
	<hr/>
	<input type="text" v-fbind:value="n">
</div>

自定義指令的語(yǔ)法,也和內(nèi)置指令一樣,   v-xxx = "a"  或 v-xxx:a,    xxx為自定義指令的名字,a為綁定的屬性.

當(dāng)自定義指令創(chuàng)建完,我們看一下Vue實(shí)例里的語(yǔ)法該怎么寫 

new Vue({
	el:'#root',
	data:{
		name:'尚硅谷',
		n:1
	},
	directives:{
        big(element,binding){
			console.log('big',this) 
			element.innerText = binding.value * 10
		},
		fbind:{
			bind(element,binding){
				element.value = binding.value
			},
			inserted(element,binding){
			    element.focus()
			},
			update(element,binding){
				element.value = binding.value
			}
		}
	}
})

自定義指令被當(dāng)作配置對(duì)象寫入directives對(duì)象中,其執(zhí)行的方式寫成回調(diào)函數(shù)。

傳參

可以見(jiàn)得,配置對(duì)象中與有兩個(gè)傳參,element與binding,他們分別代表著,其所綁定的標(biāo)簽,與其綁定的屬性。

directives:{
	big(element,binding){
		console.log(element)
		console.log(binding)
    },
//......

配置對(duì)象中常用的三個(gè)回調(diào)

配置對(duì)象中,有三個(gè)固定函數(shù),它們分別是bind、inserted、update

fbind:{
	//指令與元素成功綁定時(shí)(一上來(lái))
	bind(element,binding){
		element.value = binding.value
	},
	//指令所在元素被插入頁(yè)面時(shí)
	inserted(element,binding){
			element.focus()
	},
	//指令所在的模板被重新解析時(shí)
	update(element,binding){
		element.value = binding.value
	}
}

正如注釋所寫,bind是當(dāng)指令與元素成功綁定,也就是也面被解構(gòu)后,就會(huì)執(zhí)行。

  • inserted是當(dāng)所綁定元素在頁(yè)面存在時(shí),執(zhí)行
  • update是當(dāng)模板被重新解構(gòu)時(shí),執(zhí)行

全局自定義指令

如果想全局配置一個(gè)自定義指令,多個(gè)Vue實(shí)例都能調(diào)用,其寫法與過(guò)濾器的全局配置類似

語(yǔ)法:

Vue.directive(指令名,配置對(duì)象) 或   Vue.directive(指令名,回調(diào)函數(shù))

//定義全局指令
Vue.directive('fbind',{
    bind(element,binding){
		element.value = binding.value
	},
}

文章到這里就結(jié)束了

最后,放上全部筆記

<body>
		<!-- 
				需求1:定義一個(gè)v-big指令,和v-text功能類似,但會(huì)把綁定的數(shù)值放大10倍。
				需求2:定義一個(gè)v-fbind指令,和v-bind功能類似,但可以讓其所綁定的input元素默認(rèn)獲取焦點(diǎn)。
				自定義指令總結(jié):
						一、定義語(yǔ)法:
									(1).局部指令:
												new Vue({															new Vue({
													directives:{指令名:配置對(duì)象}   或   		directives{指令名:回調(diào)函數(shù)}
												}) 																		})
									(2).全局指令:
													Vue.directive(指令名,配置對(duì)象) 或   Vue.directive(指令名,回調(diào)函數(shù))
 
						二、配置對(duì)象中常用的3個(gè)回調(diào):
									(1).bind:指令與元素成功綁定時(shí)調(diào)用。
									(2).inserted:指令所在元素被插入頁(yè)面時(shí)調(diào)用。
									(3).update:指令所在模板結(jié)構(gòu)被重新解析時(shí)調(diào)用。
 
						三、備注:
									1.指令定義時(shí)不加v-,但使用時(shí)要加v-;
									2.指令名如果是多個(gè)單詞,要使用kebab-case命名方式,不要用camelCase命名。
		-->
		<!-- 準(zhǔn)備好一個(gè)容器-->
		<div id="root">
			<h2>{{name}}</h2>
			<h2>當(dāng)前的n值是:<span v-text="n"></span> </h2>
			<!-- <h2>放大10倍后的n值是:<span v-big-number="n"></span> </h2> -->
			<h2>放大10倍后的n值是:<span v-big="n"></span> </h2>
			<button @click="n++">點(diǎn)我n+1</button>
			<hr/>
			<input type="text" v-fbind:value="n">
		</div>
	</body>
	
	<script type="text/javascript">
		Vue.config.productionTip = false
 
		//定義全局指令
		/* Vue.directive('fbind',{
			//指令與元素成功綁定時(shí)(一上來(lái))
			bind(element,binding){
				element.value = binding.value
			},
			//指令所在元素被插入頁(yè)面時(shí)
			inserted(element,binding){
				element.focus()
			},
			//指令所在的模板被重新解析時(shí)
			update(element,binding){
				element.value = binding.value
			}
		}) */
 
		new Vue({
			el:'#root',
			data:{
				name:'尚硅谷',
				n:1
			},
			directives:{
				//big函數(shù)何時(shí)會(huì)被調(diào)用?1.指令與元素成功綁定時(shí)(一上來(lái))。2.指令所在的模板被重新解析時(shí)。
				/* 'big-number'(element,binding){
					// console.log('big')
					element.innerText = binding.value * 10
				}, */
				big(element,binding){
					console.log('big',this) //注意此處的this是window
					// console.log('big')
					element.innerText = binding.value * 10
				},
				fbind:{
					//指令與元素成功綁定時(shí)(一上來(lái))
					bind(element,binding){
						element.value = binding.value
					},
					//指令所在元素被插入頁(yè)面時(shí)
					inserted(element,binding){
						element.focus()
					},
					//指令所在的模板被重新解析時(shí)
					update(element,binding){
						element.value = binding.value
					}
				}
			}
		})
		
	</script>

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue-element-admin配置小結(jié)

    vue-element-admin配置小結(jié)

    本文主要介紹了vue-element-admin配置小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • VUE中的無(wú)限循環(huán)代碼解析

    VUE中的無(wú)限循環(huán)代碼解析

    本文通過(guò)實(shí)例代碼給大家介紹了vue中的無(wú)限循環(huán),代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-09-09
  • 詳解vue實(shí)現(xiàn)坐標(biāo)拾取器功能示例

    詳解vue實(shí)現(xiàn)坐標(biāo)拾取器功能示例

    這篇文章主要介紹了詳解vue實(shí)現(xiàn)坐標(biāo)拾取器功能示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • vue生命周期beforeDestroy和destroyed調(diào)用方式

    vue生命周期beforeDestroy和destroyed調(diào)用方式

    這篇文章主要介紹了vue生命周期beforeDestroy和destroyed調(diào)用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • vue之computed的緩存特性

    vue之computed的緩存特性

    這篇文章主要介紹了vue之computed的緩存特性,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • element前端實(shí)現(xiàn)壓縮圖片的功能

    element前端實(shí)現(xiàn)壓縮圖片的功能

    本文主要介紹了element前端實(shí)現(xiàn)壓縮圖片的功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Vue-resource實(shí)現(xiàn)ajax請(qǐng)求和跨域請(qǐng)求示例

    Vue-resource實(shí)現(xiàn)ajax請(qǐng)求和跨域請(qǐng)求示例

    本篇文章主要介紹了Vue-resource實(shí)現(xiàn)ajax請(qǐng)求和跨域請(qǐng)求示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • vue 在單頁(yè)面應(yīng)用里使用二級(jí)套嵌路由

    vue 在單頁(yè)面應(yīng)用里使用二級(jí)套嵌路由

    這篇文章主要介紹了vue 在單頁(yè)面應(yīng)用里使用二級(jí)套嵌路由,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2020-12-12
  • element-ui動(dòng)態(tài)添加表單項(xiàng)并實(shí)現(xiàn)事件觸發(fā)驗(yàn)證代碼示例

    element-ui動(dòng)態(tài)添加表單項(xiàng)并實(shí)現(xiàn)事件觸發(fā)驗(yàn)證代碼示例

    這篇文章主要給大家介紹了關(guān)于element-ui動(dòng)態(tài)添加表單項(xiàng)并實(shí)現(xiàn)事件觸發(fā)驗(yàn)證的相關(guān)資料,其實(shí)就是利用了vue的v-for循環(huán)渲染,通過(guò)添加數(shù)組實(shí)現(xiàn)動(dòng)態(tài)添加表單項(xiàng),需要的朋友可以參考下
    2023-12-12
  • vue導(dǎo)出excel文件流中文亂碼問(wèn)題及解決

    vue導(dǎo)出excel文件流中文亂碼問(wèn)題及解決

    這篇文章主要介紹了vue導(dǎo)出excel文件流中文亂碼問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06

最新評(píng)論