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

Vue下拉菜單組件化開發(fā)詳解

 更新時(shí)間:2021年09月27日 09:17:40   作者:Hgiao  
這篇文章主要為大家詳細(xì)介紹了Vue下拉菜單組件化開發(fā)過程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Vue下拉菜單組件化開發(fā)的具體代碼,供大家參考,具體內(nèi)容如下

搞一個(gè)自定義組件,只是一個(gè)很簡(jiǎn)單的下拉菜單,也就是一個(gè)思路,整起

第一步:在項(xiàng)目中專門創(chuàng)建一個(gè)放置自定義組件的文件夾(直接components底下的common中)

dropdown.vue 為一級(jí)盒子

dropdownMenu.vue 為二級(jí)盒子

dropdownItem.vue 為二級(jí)盒子內(nèi)容

第二步 :

對(duì)dropdown.vue的操作

<template>
  <div class="box">
     <!-- 給按鈕加點(diǎn)擊事件  -->
    <div @click="showM">
          <!-- 一級(jí)按鈕  -->
      <slot name="title"></slot>
    </div>
        <!--  二級(jí)盒子  -->
        
        <!--  加v-if操作 隱藏顯示效果 -->
    <slot v-if="show" name="dropdown"></slot>
  </div>
</template>

<script>
  export default {
    name: "dropdown",
    data() {
      return {
        // 默認(rèn)二級(jí)盒子關(guān)閉
        show: false
      }
    },
    methods: {
      showM() {
        this.show = !this.show
      },
      commitClick(value) {
      // 向父級(jí)暴露dropdown事件,并把值傳入
        this.$emit('change-item',value)
      }
    }
  }
</script>

<style scoped>
  .box {
    display: inline-block; /* 行內(nèi)塊 */
    position: relative; /* 相對(duì)定位 */
    top:100px;
    margin-left:100px
  }
</style>

對(duì)于dropdownMenu僅僅只是把它當(dāng)作一個(gè)盒子,只需要添加一個(gè)插槽,把盒子搭好即可

<template>
  <div class="dropdown-menu">
    <slot></slot>
  </div>
</template>

<script>
  export default {
    name: "dropdownMenu"
  }
</script>

<style scoped>
  .dropdown-menu {
    padding: 8px 0; /* 盒子內(nèi)邊距上下為8px 左右為0 */
    border-radius: 4px;  /* 盒子圓角 */
    border: 1px solid #f2f6fc;  /* 邊框?yàn)?px 灰色 */
    position: absolute;  /* 絕對(duì)定位 */
    right: 0;   /* 在右側(cè) */
    top: 110%; /* 盒子在按鈕下方 */
    background-color: #fff;  /* 背景顏色為白色 */
    box-shadow: 0 2px 4px rgba(0,0,0,0.12),0 0 6px rgba(0,0,0,.04);
    /* 為盒子添加陰影 */
  }
</style>

對(duì)dropdownItem的操作

<template>
  <div class="dropdown-item" @click="itemClick(value)">
    <slot></slot>
  </div>
</template>

<script>
export default {
  name: "dropdownItem",
  props:['value'],
  data() {
    return {};
  },
  methods: {
    itemClick(value) {
      // console.log(value)
      //通過this調(diào)用當(dāng)前組件的父級(jí)的父級(jí)也就是dropdown的showM()方法來進(jìn)行關(guān)閉
      this.$parent.$parent.showM();
      // 調(diào)用父級(jí)的父級(jí)(dropdown)的commitClick方法并傳如value值
      this.$parent.$parent.commitClick(value);
    },
  },
};
</script>

<style scoped>
 .dropdown-item {
   line-height: 40px; /* 行高40px */
   white-space: nowrap;  /* 不換行 */
   padding: 0 20px; /* 內(nèi)邊距上下為0 左右為20px */
   color: #606266; /* 字體顏色為灰色 */
   cursor: pointer;  /* 鼠標(biāo)移入為點(diǎn)擊樣子 */
 }
  .dropdown-item:hover {
    color: #409eff; /* 字體顏色為藍(lán)色 */
    background-color: #ecf5ff; /* 背景顏色為 淺~~藍(lán)色 非常淺就對(duì)了 */
  }
</style>

接下來對(duì)App.vue文件進(jìn)行操作

<template>
  <div id="app">
    <dropdown @change-item="changeItem">
      <button slot="title">按鈕</button>
      <dropdown-menu slot="dropdown">
        <dropdown-item value="吃的">吃的</dropdown-item>
        <dropdown-item value="喝的">喝的</dropdown-item>
        <dropdown-item value="玩的">玩的</dropdown-item>
      </dropdown-menu>
    </dropdown>
  </div>
</template>

<script>
  import dropdown from './components/common/dropdown'
  import dropdownMenu from "./components/common/dropdownMenu";
  import dropdownItem from "./components/common/dropdownItem";
  export default {
    name: 'App',
    components: {
      dropdown,dropdownMenu,dropdownItem
    },
    methods:{
      changeItem(e){
        console.log(e)
      }

    }
  }
</script>

在main.js導(dǎo)入組件

import zgDropdown from "@/components/common/dropdown"
import zgDropdownMenu from "@/components/common/dropdownMenu"
import zgDropdownItem from "@/components/common/dropdownItem"
Vue.component('zgDropdownItem',zgDropdownItem)
Vue.component('zgDropdown',zgDropdown)
Vue.component('zgDropdownMenu',zgDropdownMenu)

app.vue也要相應(yīng)修改

<template>
  <div id="app">
    <zg-dropdown @change-item="changeItem">
      <button slot="title">按鈕</button>
      <zg-dropdown-menu slot="dropdown">
        <zg-dropdown-item value="吃的">吃的</zg-dropdown-item>
        <zg-dropdown-item value="喝的">喝的</zg-dropdown-item>
        <zg-dropdown-item value="玩的">玩的</zg-dropdown-item>
      </zg-dropdown-menu>
    </zg-dropdown>
  </div>
</template>

<script>
  export default {
    name: 'App',
    methods:{
      changeItem(e){
        console.log(e)
      }

    }
  }
</script>
<style scoped>

</style>

大概就是這么一個(gè)思路。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue實(shí)現(xiàn)數(shù)字滾動(dòng)效果

    vue實(shí)現(xiàn)數(shù)字滾動(dòng)效果

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)數(shù)字滾動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • vue如何處理base64格式文件pdf及圖片預(yù)覽功能

    vue如何處理base64格式文件pdf及圖片預(yù)覽功能

    這篇文章主要給大家介紹了關(guān)于vue如何處理base64格式文件pdf及圖片預(yù)覽功能的相關(guān)資料,圖片的base64編碼就是可以將一副圖片數(shù)據(jù)編碼成一串字符串,使用該字符串代替圖像地址,需要的朋友可以參考下
    2024-05-05
  • 詳解Vue iview IE瀏覽器不兼容報(bào)錯(cuò)(Iview Bable polyfill)

    詳解Vue iview IE瀏覽器不兼容報(bào)錯(cuò)(Iview Bable polyfill)

    這篇文章主要介紹了Vue iview IE瀏覽器不兼容報(bào)錯(cuò)的決絕方法,由于Iview編譯使用到了es6的一些新特性,但是在IE中不支持ES6的新特性,本文就介紹一下如何解決這些問題
    2019-01-01
  • vue.js2.0點(diǎn)擊獲取自己的屬性和jquery方法

    vue.js2.0點(diǎn)擊獲取自己的屬性和jquery方法

    下面小編就為大家分享一篇vue.js2.0點(diǎn)擊獲取自己的屬性和jquery方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • Vue進(jìn)行數(shù)據(jù)可視化圖表展示的實(shí)現(xiàn)示例

    Vue進(jìn)行數(shù)據(jù)可視化圖表展示的實(shí)現(xiàn)示例

    數(shù)據(jù)可視化是現(xiàn)代化的數(shù)據(jù)分析和展示方式,可以使數(shù)據(jù)更加直觀、易于理解和傳達(dá),Vue作為一款流行的前端框架,提供了豐富的插件和工具來實(shí)現(xiàn)數(shù)據(jù)可視化圖表展示,本文將介紹如何使用Vue和Echarts/D3.js來實(shí)現(xiàn)數(shù)據(jù)可視化圖表展示,并提供示例代碼和實(shí)際應(yīng)用場(chǎng)景
    2023-10-10
  • 完美解決vue中報(bào)錯(cuò)?“TypeError:?Cannot?read?properties?of?null?(reading'forEach')“

    完美解決vue中報(bào)錯(cuò)?“TypeError:?Cannot?read?properties?of?null?

    這篇文章主要介紹了完美解決vue中報(bào)錯(cuò)?“TypeError:?Cannot?read?properties?of?null?(reading?‘forEach‘)“,本文給大家分享詳細(xì)解決方案,需要的朋友可以參考下
    2023-02-02
  • Vue如何基于vue-i18n實(shí)現(xiàn)多國(guó)語言兼容

    Vue如何基于vue-i18n實(shí)現(xiàn)多國(guó)語言兼容

    這篇文章主要介紹了Vue如何基于vue-i18n實(shí)現(xiàn)多國(guó)語言兼容,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • vue?element-ui如何在el-tabs組件最右側(cè)添加按鈕

    vue?element-ui如何在el-tabs組件最右側(cè)添加按鈕

    這篇文章主要介紹了vue?element-ui如何在el-tabs組件最右側(cè)添加按鈕問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • vue不操作dom實(shí)現(xiàn)圖片輪播的示例代碼

    vue不操作dom實(shí)現(xiàn)圖片輪播的示例代碼

    這篇文章主要介紹了vue不操作dom實(shí)現(xiàn)圖片輪播的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • vue移動(dòng)端的左右滑動(dòng)事件詳解

    vue移動(dòng)端的左右滑動(dòng)事件詳解

    這篇文章主要為大家詳細(xì)介紹了vue移動(dòng)端的左右滑動(dòng)事件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06

最新評(píng)論

孝义市| 乐山市| 宁乡县| 喀什市| 聂荣县| 马鞍山市| 平南县| 慈溪市| 弥勒县| 锦州市| 洪雅县| 通化市| 上高县| 类乌齐县| 惠东县| 盐亭县| 内江市| 策勒县| 麻江县| 陆川县| 山西省| 塘沽区| 南投县| 祁连县| 连云港市| 大足县| 盐边县| 筠连县| 闵行区| 新津县| 关岭| 炉霍县| 阳高县| 武穴市| 高要市| 五大连池市| 高邑县| 海丰县| 泗洪县| 金阳县| 北京市|