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

Vuejs使用addEventListener的事件如何觸發(fā)執(zhí)行函數(shù)的this

 更新時間:2022年06月29日 16:01:46   作者:schwarzeni  
這篇文章主要介紹了Vuejs使用addEventListener的事件觸發(fā)執(zhí)行函數(shù)的this方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

使用addEventListener事件觸發(fā)執(zhí)行函數(shù)的this

在普通的dom操作中,若是使用addEventListener

如下面的例子

<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="btn_container">
    <button id="btn">Click Me</button>
</div>
<script src="test.js"></script>
</body>
</html>
let fn  = function() {
  console.log(this);
};
document.getElementById('btn').addEventListener('click',fn);    

那么,在控制臺中輸出的this的值為觸發(fā)事件的dom節(jié)點

(另:有用的鏈接 => 傳送門)

如果是使用vuejs中的自定義directive來觸發(fā)點擊事件,觸發(fā)函數(shù)中的this又是什么呢

/**
 * 這是vuejs的一個模塊
 */
<template>
        <div class="container">
            <div class="row">
                <div class="col-xs-12 col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3">
                    <button class="btn btn-primary" v-myOn:click="fn">Click me</button>
                </div>
            </div>
        </div>
</template>
<script>
  export default {
    directives: {
      myOn: {
        bind(el, binding, vnode) {
          const event = binding.arg;
          const fn = binding.value;
          console.log(el);
          el.addEventListener(event, fn);
        }
      }
    },
    methods: {
      fn() {
        console.log(this);
      }
    }
  }
</script>   

經(jīng)過測試,這里控制臺輸出的this的值為:

這是一個虛擬dom的值,其中 $el的值為 div.container ,也就是此模塊最外層的dom節(jié)點,但是此事件綁定的是button,控制臺中輸出的bind的第一個el的值為

那么,在測試一次,在此 <div class='container'> 的外層再添加一個 <div class='outer-container'>

測試結(jié)果如下:

$el 的值依然為最外層的dom節(jié)點

結(jié)論:Vuejs中若是使用自定義的directive綁定事件,那么觸發(fā)事件后執(zhí)行函數(shù)中的this指向此模塊最外層的dom節(jié)點

addEventListener中事件函數(shù)的this指向問題

看代碼

//定義一個可見的盒子用于綁定點擊事件
var box = document.getElementById('box');
box.x = 'box'
//設(shè)置執(zhí)行函數(shù)的對象屬性
function outFunc() {
? this.x = 'outFunc';
? box.addEventListener('click', func, false);
}
outFunc();
function func() {
? console.log(this.x); //輸出box 說明該this指向的是調(diào)用addEventListener的對象
}

代碼2

function outFunc() {
? this.x = 'outFunc';//給全局對象window.x賦值(相當(dāng)于賦值全局變量)
? box.addEventListener('click', func.bind(this), false);
}
function func() {
? console.log(this.x); //輸出outFunc 使用bind設(shè)置this的值
}

總結(jié):使用bind綁定的事件才是指向函數(shù),否則指向的是調(diào)用addEventListener的對象。

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

相關(guān)文章

  • 詳解Vue.js中的組件傳值機制

    詳解Vue.js中的組件傳值機制

    Vue.js 是一款流行的前端框架,它提供了一些方便的機制來管理組件之間的通信,其中包括組件傳值,本文將詳細介紹 Vue.js 中的組件傳值機制,包括父子組件傳值、兄弟組件傳值、跨級組件傳值等多種方式,需要的朋友可以參考下
    2023-08-08
  • vue Cli 環(huán)境刪除與重裝教程 - 版本文檔

    vue Cli 環(huán)境刪除與重裝教程 - 版本文檔

    這篇文章主要介紹了vue Cli 環(huán)境刪除與重裝教程 - 版本文檔,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue?+?qiankun?項目搭建過程

    vue?+?qiankun?項目搭建過程

    這篇文章主要介紹了vue?+?qiankun?項目搭建,首先是通過cli3構(gòu)建vue2項目,通過qiankun改造主應(yīng)用,本文結(jié)合實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • 淺析vue3項目中自定義指令的運用

    淺析vue3項目中自定義指令的運用

    自定義指令是一種在Vue應(yīng)用程序中擴展HTML標(biāo)簽的能力,通過自定義指令,我們可以直接在模板中使用指令名,下面我們就來看看項目中具體如何使用自定義指令的吧
    2023-08-08
  • 在Vue中實現(xiàn)Excel導(dǎo)出功能(數(shù)據(jù)導(dǎo)出)

    在Vue中實現(xiàn)Excel導(dǎo)出功能(數(shù)據(jù)導(dǎo)出)

    本文分享了如何在前端導(dǎo)出Excel文件,強調(diào)了前端導(dǎo)出的即時性、便捷性、靈活性和定制化優(yōu)勢,以及減輕后端服務(wù)器負擔(dān)的特點,詳細介紹了ExcelJS和FileSaver.js兩個工具庫的使用方法和主要功能,最后通過Vue實現(xiàn)了Excel的導(dǎo)出功能
    2024-10-10
  • Ant-design-vue Table組件customRow屬性的使用說明

    Ant-design-vue Table組件customRow屬性的使用說明

    這篇文章主要介紹了Ant-design-vue Table組件customRow屬性的使用說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • vue編寫簡單的購物車功能

    vue編寫簡單的購物車功能

    這篇文章主要為大家詳細介紹了vue編寫簡單的購物車功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • vue-cli中的圖片資源存放位置詳解

    vue-cli中的圖片資源存放位置詳解

    這篇文章主要介紹了vue-cli中的圖片資源存放位置,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Element UI 上傳組件實現(xiàn)文件上傳并附帶額外參數(shù)功能

    Element UI 上傳組件實現(xiàn)文件上傳并附帶額外參數(shù)功能

    在使用 ElementUI 的上傳組件 el-upload 實現(xiàn)文件上傳功能時,如果單文件上傳是比較簡單的,但是在實際需求中,往往會在上傳文件時伴隨著一些其他參數(shù),怎么操作呢,下面通過示例代碼講解感興趣的朋友一起看看吧
    2023-08-08
  • 解決vue-cli + webpack 新建項目出錯的問題

    解決vue-cli + webpack 新建項目出錯的問題

    下面小編就為大家分享一篇解決vue-cli + webpack 新建項目出錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03

最新評論

南和县| 南充市| 抚顺县| 壤塘县| 右玉县| 西乌珠穆沁旗| 防城港市| 阜平县| 桐庐县| 新昌县| 黔西县| 巧家县| 思南县| 珠海市| 曲阜市| 黄冈市| 高青县| 建阳市| 西昌市| 三台县| 祁门县| 九龙城区| 荃湾区| 平昌县| 临颍县| 襄城县| 垦利县| 高平市| 任丘市| 贞丰县| 琼海市| 锦州市| 伊通| 巨野县| 土默特左旗| 张家界市| 宜章县| 开鲁县| 湾仔区| 佛山市| 丰台区|