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

vue中的dom節(jié)點(diǎn)和window對(duì)象

 更新時(shí)間:2022年04月19日 10:33:39   作者:reisaru  
這篇文章主要介紹了vue中的dom節(jié)點(diǎn)和window對(duì)象,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

window對(duì)象

首先window對(duì)象是瀏覽器下的默認(rèn)對(duì)象,也就是全局對(duì)象,在沒有明確指向的時(shí)候this指向window。即使切換路由,window對(duì)象里面的屬性和方法依舊會(huì)保留。因此可以在控制欄直接輸入this、window、self都可以直接打印window對(duì)象。window對(duì)象很很多默認(rèn)的方法和屬性。

一切全局變量和方法都是window的屬性和方法,也就是只要沒有指定作用域就會(huì)賦值給window。

<script type="text/javascript">
? ? var name = "chunlynn";
? ? this.sex = "man"; // 這里的this就是隱式的window對(duì)象,相當(dāng)于 sex = "man";
? ? age = 27;
</script>

像這種name、this、age都掛載到了window對(duì)象上,成為了window對(duì)象的屬性。

即使用了框架,比如vue,jQuery,也只是在window下掛載一個(gè)對(duì)象,比如引入jQuery之后就會(huì)在全局掛載一個(gè)$的對(duì)象。還是可以直接通過(guò)window調(diào)用全局屬性和方法。

在vue中,因?yàn)橛脀ebpack打包,每個(gè)vue都是單獨(dú)的模塊,所以需要window._this=1 這樣才能夠引入window對(duì)象。而且需要定義在相應(yīng)的script中。這樣就可以在控制臺(tái)直接用_this得到這個(gè)變量。

dom元素

vue中最好不要直接操作dom元素的。因?yàn)関ue是用虛擬dom樹就行插入的。

首先數(shù)據(jù)發(fā)生改變,就會(huì)經(jīng)過(guò) Data 處理,然后Dep會(huì)發(fā)出通知(notify),告訴 Watcher 有數(shù)據(jù)發(fā)生了變化,接著 Watcher 會(huì)傳達(dá)給渲染函數(shù)跟他說(shuō)有數(shù)據(jù)變化了,可以渲染視圖了(數(shù)據(jù)驅(qū)動(dòng)視圖),進(jìn)而渲染函數(shù)執(zhí)行render 方法去更新 VNODE,也就是我們說(shuō)的虛擬DOM,最后虛擬DOM根據(jù)最優(yōu)算法,去局部更新需要渲染的視圖。

vue中對(duì)dom節(jié)點(diǎn)的操作一般是用ref來(lái)完成的。ref 加在普通的元素上,用this.$refs.name 獲取到的是dom元素,和原生的document.get(ID)獲得的dom元素一樣,擁有這個(gè)dom元素的默認(rèn)屬性,像innertext這種,而ref 加在組件上,用this.$refs.name 獲取到的是vue組件實(shí)例,可以使用組件的所有屬性和方法。此時(shí)的結(jié)果是一個(gè)字典序列,可以直接this.$refs.name[用到的屬性]來(lái)獲取并且更改。

但是ref的對(duì)象是一個(gè)for循環(huán)的數(shù)組,里面每一個(gè)元素就是vue對(duì)象,也是字典序列。這里因?yàn)閞ef的對(duì)象是一個(gè)li,所以每一個(gè)元素都是li對(duì)象。 

ref 需要在dom渲染完成后才會(huì)有,在使用的時(shí)候確保dom已經(jīng)渲染完成。比如在生命周期 mounted(){} 鉤子中調(diào)用,或者在 this.$nextTick(()=>{}) 中調(diào)用。

如果是自定義的組件,甚至可以通過(guò)ref調(diào)用emit(A)來(lái)實(shí)現(xiàn)@ A="實(shí)現(xiàn)A"的方法。其實(shí)子組件包括第三方組件的api,也就是組件真正實(shí)現(xiàn)的地方定義的方法和屬性,都可以在用ref獲得這個(gè)組件的方法后,自己模擬實(shí)現(xiàn)。 

獲取dom節(jié)點(diǎn)的3種方式

vue本來(lái)無(wú)需操作DOM來(lái)更新界面,而且Vue也不推薦我們直接操作DOM,但是我們非要拿到DOM操作DOM怎么辦,那也是有方法的,而且不止一種方法

方式一:(事件源)

<body>
    <div id="aa">
        <input type="button" value="點(diǎn)擊" v-on:click='fun'/>
    </div>
    <script>
        new Vue({
            el:'#aa',
            methods:{
                fun:function(event){
                    console.log(event.target);
                }
            }
        })
    </script>
</body>

輸出結(jié)果

當(dāng)然也可以在方法中傳參進(jìn)去:

<body>
? ? <div id="aa">
? ? ? ? <input type="button" value="點(diǎn)擊" v-on:click='fun($event.target)'/>
? ? </div>
? ? <script>
? ? ? ? new Vue({
? ? ? ? ? ? el:'#aa',
? ? ? ? ? ? methods:{
? ? ? ? ? ? ? ? fun(x){
? ? ? ? ? ? ? ? ? ? console.log(x);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? })
? ? </script>
</body>

方式二:(使用ref)

<body>
? ? <div id="aa">
? ? ? ? <input ref='name' type="button" value="點(diǎn)擊" v-on:click='fun'/>
? ? </div>
? ? <script>
? ? ? ? new Vue({
? ? ? ? ? ? el:'#aa',
? ? ? ? ? ? methods:{
? ? ? ? ? ? ? ? fun(){
? ? ? ? ? ? ? ? ? ? console.log(this.$refs.name);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? })
? ? </script>
</body>

輸出結(jié)果: 

方式三:(自定義全局指令)

<body>
? ? <div id="aa">
? ? ? ? <input type="button" value="點(diǎn)擊" v-get/>
? ? </div>
? ? <script>
? ? ? ??
? ? ? ? Vue.directive("get",{
? ? ? ? ? ? bind:function(el){
? ? ? ? ? ? ? ? console.log(el);
? ? ? ? ? ? }
? ? ? ? })
? ? ? ? new Vue({
? ? ? ? ? ? el:'#aa'
? ? ? ? })
? ? </script>
</body>

這里不用點(diǎn)擊,就可以獲取元素,好像在谷歌顯示不友好,

在火狐顯示會(huì)好點(diǎn) 

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

相關(guān)文章

  • 快速了解vue-cli 3.0 新特性

    快速了解vue-cli 3.0 新特性

    vue-cli 是 vue 官方團(tuán)隊(duì)推出的一款快速開發(fā) vue 項(xiàng)目的構(gòu)建工具,具有開箱即用并且提供簡(jiǎn)潔的自定義配置等功能。這篇文章主要介紹了快速了解vue-cli 3.0 新特性,需要的朋友可以參考下
    2018-02-02
  • vue配置別名alias在webstorm不生效問(wèn)題及解決

    vue配置別名alias在webstorm不生效問(wèn)題及解決

    這篇文章主要介紹了vue配置別名alias在webstorm不生效問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue?cli?局部混入mixin和全局混入mixin的過(guò)程

    vue?cli?局部混入mixin和全局混入mixin的過(guò)程

    這篇文章主要介紹了vue?cli?局部混入mixin和全局混入mixin的過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • VUE?mixin?使用示例詳解

    VUE?mixin?使用示例詳解

    混入mixin提供了一種非常靈活的方式,來(lái)分發(fā)Vue組件中的可復(fù)用功能,一個(gè)混入對(duì)象可以包含任意組件選項(xiàng),接下來(lái)通過(guò)本文給大家介紹VUE?mixin?使用,需要的朋友可以參考下
    2022-08-08
  • vue3組合式api創(chuàng)建單文件組件的寫法

    vue3組合式api創(chuàng)建單文件組件的寫法

    Vue3?中的?Composition?API?是一種新的編寫組件邏輯的方式,它提供了更好的代碼組織、類型推導(dǎo)、測(cè)試支持和復(fù)用性,本文為大家介紹了vue3利用組合式api創(chuàng)建單文件組件的方法,感興趣的可以了解下
    2023-08-08
  • 每天學(xué)點(diǎn)Vue源碼之vm.$mount掛載函數(shù)

    每天學(xué)點(diǎn)Vue源碼之vm.$mount掛載函數(shù)

    這篇文章主要介紹了vm.$mount掛載函數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 關(guān)于element Drawer抽屜的使用

    關(guān)于element Drawer抽屜的使用

    這篇文章主要介紹了關(guān)于element Drawer抽屜的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • uni app仿微信頂部導(dǎo)航條功能

    uni app仿微信頂部導(dǎo)航條功能

    這篇文章主要介紹了uni-app自定義導(dǎo)航欄按鈕|uniapp仿微信頂部導(dǎo)航條功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • vue3監(jiān)聽resize窗口事件(離開頁(yè)面要銷毀窗口事件)

    vue3監(jiān)聽resize窗口事件(離開頁(yè)面要銷毀窗口事件)

    這篇文章主要給大家介紹了關(guān)于vue3監(jiān)聽resize窗口事件(離開頁(yè)面要銷毀窗口事件)的相關(guān)資料,vue是單頁(yè)面應(yīng)用,路由切換后,定時(shí)器并不會(huì)自動(dòng)關(guān)閉,需要手動(dòng)清除,當(dāng)頁(yè)面被銷毀時(shí),清除定時(shí)器即可,需要的朋友可以參考下
    2023-11-11
  • Vue之Axios的異步通信詳解

    Vue之Axios的異步通信詳解

    這篇文章主要為大家詳細(xì)介紹了Vue之Axios的異步通信,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03

最新評(píng)論

镇雄县| 义乌市| 石泉县| 江津市| 司法| 张家港市| 灵宝市| 宣恩县| 万源市| 夏邑县| 蕲春县| 泸州市| 海林市| 志丹县| 三门峡市| 泰安市| 安新县| 怀化市| 汾西县| 松溪县| 香河县| 新巴尔虎右旗| 水富县| 河间市| 四子王旗| 辉县市| 广昌县| 改则县| 宁蒗| 湘潭市| 宜宾县| 航空| 马边| 香港 | 太谷县| 红桥区| 浦东新区| 城市| 兴宁市| 陈巴尔虎旗| 维西|