亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

vue2實現(xiàn)傳送門效果的示例

 更新時間:2023年04月23日 09:46:08   作者:漢武大帝·  
本文主要介紹了vue2實現(xiàn)傳送門效果的示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

描述

在Vue3中<Teleport> 是一個內(nèi)置組件,使我們可以將一個組件的一部分模板“傳送”到該組件的 DOM 層次結(jié)構(gòu)之外的 DOM 節(jié)點中;現(xiàn)在在vue2實現(xiàn)一下效果:將組件掛載到body上

先看效果

代碼

Teleport 組件:

<script>
export default {
  props: {
    to: {
      type: String,
      required: true
    },
    disabled: {
      type: Boolean,
      required: true
    }
  },
  inject: ['parent'],
  //   inject 選項應(yīng)該是:
  // 一個字符串?dāng)?shù)組,或 一個對象,對象的 key 是本地的綁定名,value 是:
  //     在可用的注入內(nèi)容中搜索用的 key (字符串或 Symbol),或
  //     一個對象,該對象的:
  //          from property 是在可用的注入內(nèi)容中搜索用的 key (字符串或 Symbol)
  //          default property 是降級情況下使用的 value
 
  // Vue 選項中的 render 函數(shù)若存在,則 Vue 構(gòu)造函數(shù)不會從 template 選項或通過 el 選項指定的掛載元素中提取出的 HTML 模板編譯渲染函數(shù)。
  render() {
    return <div class="Teleport">{this.$scopedSlots.default()}</div>
    // $scopedSlots用來訪問作用域插槽。對于包括 默認(rèn) slot 在內(nèi)的每一個插槽,該對象都包含一個返回相應(yīng) VNode 的函數(shù)。
  },
  watch: {
    disabled() {
      if (!this.disabled) {
        // this指向組件的實例。$el指向當(dāng)前組件的DOM元素。
        document.querySelector(this.to).appendChild(this.$el);
      } else {
        this.parent.toSourceDom(this.$el);
      }
    }
  },
  mounted() {
    if(!this.disabled) document.querySelector(this.to).appendChild(this.$el)
  },
  methods: {},
};
</script>
<style lang="scss" scoped>
.Teleport {
  width: 100%;
  height: 100%;
}
</style>

index.vue 中引用 Teleport.vue 組件

<template>
  <div>
    <Teleport v-if="isShow" :disabled="isTeleport" to="body">
      <div class="cover">
        <div class="inner">
          我是彈窗
          <div class="close" @click="closed">關(guān)閉按鈕</div>
        </div>
      </div>
    </Teleport>
    <button @click="show">顯示</button>
  </div>
</template>
<script>
import Teleport from "./Teleport.vue";
import model from "./model.vue";
export default {
  data() {
    return {
      isShow: false, // 控制 Teleport 組件掛載時機
      isTeleport: false, // 控制什么時候被傳送
    };
  },
  provide() {
    return {
      parent: this,
    };
  },
  components: { Teleport, model },
  methods: {
    show() {
      this.isShow = true;
    },
    closeModel() {
      this.isShow = false;
    },
    toSourceDom(dom) {
      document.getElementById("sourceBox").appendChild(dom);
    },
  },
};
</script>
<style lang="scss" scoped>
.cover {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba($color: #000000, $alpha: 0.3);
  .inner {
    width: 500px;
    height: 300px;
    border-radius: 10px;
    background: #fff;
    color: red;
    font-weight: 600;
    position: absolute;
    left: 40%;
    top: 30%;
    text-align: center;
    font-size: 30px;
    .close{
      position: absolute;
      bottom: 0;
      right: 0;
      background: skyblue;
      padding: 10px;
      cursor: pointer;
      border-radius: 10px 0 0 0;
    }
  }
}
</style>

到此這篇關(guān)于vue2實現(xiàn)傳送門效果的示例的文章就介紹到這了,更多相關(guān)vue2 傳送門內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • el-popover如何通過js手動控制彈出框顯示、隱藏

    el-popover如何通過js手動控制彈出框顯示、隱藏

    最近項目中多次用到了Popover彈出框,下面這篇文章主要給大家介紹了關(guān)于el-popover如何通過js手動控制彈出框顯示、隱藏的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • Vue實現(xiàn)導(dǎo)航欄點擊當(dāng)前標(biāo)簽變色功能

    Vue實現(xiàn)導(dǎo)航欄點擊當(dāng)前標(biāo)簽變色功能

    這篇文章主要為大家詳細(xì)介紹了Vue實現(xiàn)導(dǎo)航欄點擊當(dāng)前標(biāo)簽變色功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 使用vite搭建ssr活動頁架構(gòu)的實現(xiàn)

    使用vite搭建ssr活動頁架構(gòu)的實現(xiàn)

    本文主要介紹了使用vite搭建ssr活動頁架構(gòu),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • vue項目中應(yīng)用ueditor自定義上傳按鈕功能

    vue項目中應(yīng)用ueditor自定義上傳按鈕功能

    這篇文章主要介紹了vue項目中應(yīng)用ueditor自定義上傳按鈕功能,文中以vue-cli生成的項目為例給大家介紹了vue項目中使用ueditor的方法,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-04-04
  • 一文帶你上手Vue新的狀態(tài)管理Pinia

    一文帶你上手Vue新的狀態(tài)管理Pinia

    Vuex 作為一個老牌 Vue 狀態(tài)管理庫,大家都很熟悉了,Pinia 是 Vue.js 團隊成員專門為 Vue 開發(fā)的一個全新的狀態(tài)管理庫,本文就來講講它的具體使用吧
    2023-04-04
  • vue項目中實現(xiàn)的微信分享功能示例

    vue項目中實現(xiàn)的微信分享功能示例

    這篇文章主要介紹了vue項目中實現(xiàn)的微信分享功能,結(jié)合實例形式分析了基于vue.js實現(xiàn)的微信分享功能具體定義與使用方法,需要的朋友可以參考下
    2019-01-01
  • vue組件中iview的modal組件爬坑問題之modal的顯示與否應(yīng)該是使用v-show

    vue組件中iview的modal組件爬坑問題之modal的顯示與否應(yīng)該是使用v-show

    這篇文章主要介紹了vue組件中iview的modal組件爬坑問題之modal的顯示與否應(yīng)該是使用v-show,本文通過實例圖文相結(jié)合的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • vue?watch監(jiān)聽觸發(fā)優(yōu)化搜索框的性能防抖節(jié)流的比較

    vue?watch監(jiān)聽觸發(fā)優(yōu)化搜索框的性能防抖節(jié)流的比較

    這篇文章主要為大家介紹了vue?watch監(jiān)聽觸發(fā)優(yōu)化搜索框的性能防抖節(jié)流的比較,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • 詳解Vue中watch的詳細(xì)用法

    詳解Vue中watch的詳細(xì)用法

    在vue中,使用watch來響應(yīng)數(shù)據(jù)的變化。watch的用法大致有三種。下面代碼是watch的一種簡單的用法,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-11-11
  • Vue?3需要避免的錯誤

    Vue?3需要避免的錯誤

    Vue3已經(jīng)穩(wěn)定了相當(dāng)長一段時間了。許多代碼庫都在生產(chǎn)環(huán)境中使用它,其他人最終都將不得不遷移到Vue3。我現(xiàn)在有機會使用它并記錄了我的錯誤,下面這些錯誤你可能想要避免
    2023-03-03

最新評論