最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue事件監(jiān)聽函數(shù)on中的this指針域使用

 更新時(shí)間:2022年08月11日 17:21:32   作者:MSDN_tang  
這篇文章主要介紹了vue事件監(jiān)聽函數(shù)on中的this指針域使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

事件監(jiān)聽函數(shù)on中this指針域

使用eventBus在兩個(gè)組件A,B之間通訊:

//定義全局eventBus用于事件傳遞
var bus = new Vue();
//A組件
var A = Vue.component({
?? ?...
?? ?
?? ?data:{
?? ??? ?dataA:1,
?? ?},
?? ?//在鉤子函數(shù)中將監(jiān)聽_event事件
?? ?created:function(){
?? ??? ?var this_com = this;
?? ??? ?bus.$on('_event', function(value){
?? ??? ??? ?this_com.dataA = value;
?? ??? ?})
?? ?},
?? ?
?? ?...
})
//B組件
var B = Vue.component({
?? ?...
?? ?data:{
?? ??? ?dataB = 2;
?? ?},
?? ?methods:{
?? ??? ?changeA:function(){
?? ??? ??? ?//觸發(fā)事件_event
?? ??? ??? ?bus.$emit('_event', this.dataB);
?? ??? ?},
?? ?},
?? ?template:`
?? ??? ?<div v-bind:click="this.changeA"></div>
?? ?`
})

可以看到,在組件A監(jiān)聽事件_event事件的函數(shù)前需要提前保存this指針為this_com,因?yàn)樵诒O(jiān)聽函數(shù)中的this不再指向A組件本身,而是指向事件監(jiān)聽者bus。

另一種方案是用箭頭函數(shù)代替事件監(jiān)聽函數(shù),因?yàn)榧^函數(shù)可以將指針域綁定到當(dāng)前組件

var A = Vue.component({
?? ?...
?? ?
?? ?data:{
?? ??? ?dataA:1,
?? ?},
?? ?//在鉤子函數(shù)中將監(jiān)聽_event事件
?? ?created:function(){
?? ??? ?var this_com = this;
?? ??? ?bus.$on('_event', value=>{
?? ??? ??? ?this_com.dataA = value;
?? ??? ?})
?? ?},
?? ?
?? ?...
})

vue中的this問題

在vue中當(dāng)在vue中使用匿名函數(shù)的時(shí)候,會(huì)出現(xiàn)this指針改變的問題,出現(xiàn)方法或者屬性數(shù)據(jù)undefine的問題,以下是相關(guān)的解決方法

在回調(diào)函數(shù)之前重新將this賦值

例如

?connection() {
? ? ? // 更換that指針
? ? ? var that = this
? ? ? const socket = new SockJS('http://localhost:8080/test-info')
? ? ? this.stompClient = Stomp.over(socket)
? ? ? console.log('----------------')
? ? ? console.log(this.stompClient)
? ? ? console.log('----------------')
? ? ? const tt = this.stompClient
? ? ? // 此處不能使用 this.stompClient
? ? ? tt.connect({}, function(frame) {
? ? ? ? console.log('++++++++++++++++')
? ? ? ? console.log('Connected: ' + frame)
? ? ? ? console.log('++++++++++++++++')
?
? ? ? ? tt.subscribe('/stock/price', function(val) {
? ? ? ? ? console.log(val)
? ? ? ? ? console.log(JSON.parse(val.body))
? ? ? ? ? that.list1 = JSON.parse(val.body)
? ? ? ? })
? ? ? })
? ? }

使用箭頭函數(shù)

? connection() {
? ? ? // 更換that指針
? ? ? const socket = new SockJS('http://localhost:8080/test-info')
? ? ? this.stompClient = Stomp.over(socket)
? ? ? console.log('----------------')
? ? ? console.log(this.stompClient)
? ? ? console.log('----------------')
? ? ? ?this.stompClient.connect({}, (frame) => {
? ? ? ? console.log(frame)
? ? ? ? this.stompClient.subscribe('/stock/price', (val) => {
? ? ? ? ? console.log('--------list1-----------')
? ? ? ? ? console.log(this.list1)
? ? ? ? ? console.log('--------list1-----------')
? ? ? ? ? this.list1 = JSON.parse(val.body)
? ? ? ? })
? ? ? })
? ? }

在回調(diào)函數(shù)中有時(shí)候回調(diào)函數(shù)會(huì)修改this的指向,this本來應(yīng)該指的是vue這個(gè)對(duì)象,但是他的this指向的是回調(diào),由于在回調(diào)函數(shù)改變了this指針,導(dǎo)致后序出現(xiàn)this指向的數(shù)據(jù)出現(xiàn)未定義的狀況。

但是在箭頭函數(shù)中this指向的永遠(yuǎn)都是vue對(duì)象,所以建議多是想用箭頭函數(shù)。

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

相關(guān)文章

  • npm run dev報(bào)錯(cuò)信息及解決方法

    npm run dev報(bào)錯(cuò)信息及解決方法

    這篇文章主要為大家介紹了npm run dev報(bào)錯(cuò)信息及解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • element日期組件實(shí)現(xiàn)只能選擇小時(shí)或分鐘

    element日期組件實(shí)現(xiàn)只能選擇小時(shí)或分鐘

    本文主要介紹了element日期組件實(shí)現(xiàn)只能選擇小時(shí)或分鐘,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Vue計(jì)時(shí)器的用法詳解

    Vue計(jì)時(shí)器的用法詳解

    這篇文章主要為大家詳細(xì)介紹了Vue計(jì)時(shí)器的用法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Uniapp 實(shí)現(xiàn)頂部標(biāo)簽頁切換功能(詳細(xì)步驟)

    Uniapp 實(shí)現(xiàn)頂部標(biāo)簽頁切換功能(詳細(xì)步驟)

    本文介紹了如何在UniApp中實(shí)現(xiàn)頂部標(biāo)簽頁切換功能,u-tab-bar組件提供了便捷的標(biāo)簽切換功能和豐富的樣式選項(xiàng),而swiper組件則更加靈活,支持自定義切換方式,根據(jù)自己的需求選擇合適的方式實(shí)現(xiàn)頂部標(biāo)簽頁切換,感興趣的朋友一起看看吧
    2025-02-02
  • antd實(shí)現(xiàn)table組件選中單行換樣式(比如背景顏色)

    antd實(shí)現(xiàn)table組件選中單行換樣式(比如背景顏色)

    這篇文章主要介紹了antd實(shí)現(xiàn)table組件選中單行換樣式(比如背景顏色),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue3中使用ref語法糖的示例代碼

    vue3中使用ref語法糖的示例代碼

    Vue3提了一個(gè)Ref?Sugar的RFC,即ref語法糖,目前還處理實(shí)驗(yàn)性的(Experimental)階段,今天通過本文給大家介紹vue3中使用ref語法糖的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧
    2022-09-09
  • vue-loader和webpack項(xiàng)目配置及npm錯(cuò)誤問題的解決

    vue-loader和webpack項(xiàng)目配置及npm錯(cuò)誤問題的解決

    這篇文章主要介紹了vue-loader和webpack項(xiàng)目配置及npm錯(cuò)誤問題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 源碼分析Vue3響應(yīng)式核心之reactive

    源碼分析Vue3響應(yīng)式核心之reactive

    這篇文章主要為大家詳細(xì)介紹了Vue3響應(yīng)式核心之reactive的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Vue3有一定的幫助,需要的可以參考一下
    2023-04-04
  • Vue.js中el-table表格自定義列控制與拖拽

    Vue.js中el-table表格自定義列控制與拖拽

    本文主要介紹了Vue.js中el-table表格自定義列控制與拖拽,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • vue實(shí)現(xiàn)多個(gè)el-form表單提交統(tǒng)一校驗(yàn)的2個(gè)方法

    vue實(shí)現(xiàn)多個(gè)el-form表單提交統(tǒng)一校驗(yàn)的2個(gè)方法

    這篇文章主要給大家介紹了關(guān)于vue實(shí)現(xiàn)多個(gè)el-form表單提交統(tǒng)一校驗(yàn)的2個(gè)方法,文中通過代碼示例介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或使用vue具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07

最新評(píng)論

广昌县| 农安县| 乌鲁木齐县| 正定县| 荥经县| 准格尔旗| 彭水| 西华县| 库伦旗| 太仓市| 合江县| 靖远县| 固始县| 筠连县| 桃园县| 馆陶县| 梅河口市| 万载县| 台中县| 霍州市| 灵宝市| 奉节县| 五指山市| 武胜县| 阳春市| 福海县| 自贡市| 淄博市| 琼海市| 镇康县| 宜良县| 永善县| 仲巴县| 潼南县| 新余市| 贺州市| 塔河县| 宁南县| 虎林市| 商洛市| 蕉岭县|