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

VUE前后端學習tab寫法實例

 更新時間:2019年08月06日 15:55:13   作者:陽光男孩  
在本篇文章里小編給大家分享了關(guān)于VUE前后端學習tab寫法實例以及相關(guān)知識點,需要的朋友們參考下。

動態(tài)創(chuàng)建一個tab,里面放一個table,這樣一個后臺管理的基本功能(之一)就出來了。

好吧,這里其實只是試試水,感受一下vue的數(shù)據(jù)驅(qū)動可以怎么玩,通過一個個實例學習一下vue的各個知識點。這里要看看方法和css如何設置。

一、目標

1、  可以動態(tài)創(chuàng)建tab。

2、  可以切換(廢話)、可以關(guān)閉tab。

3、  Css的設置。

4、  方法的處理方式。

5、  效果圖

 

二、思路

應該有好多種方式可以實現(xiàn),這里先試一個,其他的以后再說。

還是數(shù)據(jù)驅(qū)動,那么就建立一個大的數(shù)據(jù)包,把tab信息和table信息都放進去,然后綁定就好了。似乎不是太難的樣子。Emmmmmm大概是吧。

Tab切換,暫時使用css的方式來控制。

關(guān)閉tab,就是干掉對應的數(shù)據(jù)。

三、設計與編碼 1.    數(shù)據(jù)包

var tab = new Vue({
    el: '#tab',
    data: {
      tabNumber: 1,    //標簽數(shù)量,這個是臨時的,便于自動重新綁定
      currentTabId: 1,  //當前激活的tab的id
      beforeTabId: 1,   //上一個被激活的tab的id
      tabs: {
        tab1: { //可以有多個標簽,這里先默認一個tab
          id: "1", //標簽識別標示
          title: "我的桌面",
          isShow:true,    //是否顯示
          message: '桌面',
          orderBy: [], //可以控制字段的先后順序,想調(diào)整列的先后順序,改這個數(shù)組就行,可以做個性化設置
          tableTh: {}, //表頭的描述信息
          dataList: [] //數(shù)據(jù)包,字段名作為關(guān)鍵字,便于列的調(diào)整先后順序
        }
      }
    },
    methods: {
      tabClick: function (id) {
        //切換tab
        //alert("切換tab" + id);
        //隱藏當前的tab
        var oldId = tab.currentTabId; //記錄切換前tab的id
        tab.beforeTabId = oldId;
        tab.tabs["tab" + oldId].isShow = false; //隱藏切換前的tab

        tab.currentTabId = id; //記錄切換后的id
        tab.tabs["tab" + id].isShow = true; //顯示切換后的tab
   
      },
      closeTab: function (id) {
        if (id === "1") {
          alert("這是桌面,建議不要關(guān)閉哦:)");
          return;
        }
        
        delete tab.tabs["tab" + id]; //這種方式不會被vue監(jiān)控到,所以不會觸發(fā)視圖的刷新
        tab.tabNumber = tab.tabNumber - 1; //這樣子湊合一下。觸發(fā)視圖的刷新

        //設置“激活”狀態(tài)
        var oldId = tab.beforeTabId; //上一個激活tab
        var nowId = tab.currentTabId; //現(xiàn)在激活tab

        if (nowId === id) {
          //關(guān)掉的是激活tab,需要設置上一個tab為激活狀態(tài)
          tab.currentTabId = oldId;
          tab.tabs["tab" + oldId].isShow = true; //這么寫好像可以觸發(fā)視圖的刷新
          tab.beforeTabId = 1;
        }
        else if (oldId === id) {
          //關(guān)閉的是上一個激活tab,修改前一個tab的id
          tab.beforeTabId = 1;
           
        }else {
          //需要強制修改一下,否則不會刷新,emmm,好吧還是沒自動刷新
          tab.currentTabId = nowId;
        }
       }
    }
});

 methods 這個也是一個保留字(關(guān)鍵字),就是放方法的。里面可以有多個方法,方法名稱和標簽里的v-on:XXXX='00000' 對應。

這里寫了兩個方法,一個是切換tab的,一個是關(guān)閉tab的。

切換tab:按照數(shù)據(jù)驅(qū)動視圖的思路,在方法里面改變數(shù)據(jù)的isShow 屬性值,然后通過模板的設置來實現(xiàn)切換效果。

關(guān)閉tab:干掉對應的數(shù)據(jù)即可,只是實現(xiàn)的時候遇到點小問題,delele的方式不能被監(jiān)控,到時視圖不能及時更新,所以加了一個tab數(shù)量的屬性,關(guān)掉一個tab,數(shù)量-1,這樣數(shù)據(jù)變化就可以被監(jiān)控到了,然后一起重新綁定。

 2.    模板

<div>
  <!--tab標簽-->
  <ul class="tabs left">
    <li v-for="t in tabs" v-bind:class="{'selectTag':t.isShow}">
      <a v-on:click="tabClick(t.id)" href="javascript:void(0)" rel="external nofollow" > {{t.title}}&nbsp;
        <em class="arrup" v-on:click.stop="closeTab(t.id)">x</em>
      </a>
    </li>
  </ul>

  <div v-for="t in tabs" v-show="t.isShow">
    {{ t.message }}{{tabNumber}}
    <table class="table_default1" v-show="t.message!=='桌面'">
      <tr>
        <th>序號</th>
        <th v-for="key in t.orderBy">
          {{t.tableTh[key].title}}
        </th>
      </tr>
      <tr v-for="(tr,i) in t.dataList">
        <td>{{i+1}}</td>
        <td v-for="index in t.orderBy" v-bind:align="t.tableTh[index].align">
          {{tr[index]}}
        </td>

      </tr>
    </table>
  </div>
</div>

 切換tab

用v-show的方法來控制div是否顯示。

v-show是通過修改style的屬性來實現(xiàn)的。

用v-bind:class="{'selectTag':t.isShow}" 的方式來實現(xiàn)tab的激活效果。

v-bind:class 可以綁定css名稱。因為css名稱總是要被換來換去的,所以vue就很貼心的提供了這種if true 才設置的方式,冒號后面為真,才會設置設個css名稱,這樣數(shù)據(jù)驅(qū)動的時候就方便多了。

 四、運行效果

調(diào)試了半天,好吧上年紀了,思維不夠敏捷,這么點邏輯問題就卡住了,哎。

不過最后還是調(diào)試成功了。

五、總結(jié)

這個有一個明顯的問題,這個數(shù)據(jù)包是不是有點大,創(chuàng)建的tab越多,數(shù)據(jù)包就越大,有沒有性能問題?會不會卡?

另外這還只是table,如果增加了按鈕、查詢條件、分頁控件,這個數(shù)據(jù)包的結(jié)構(gòu)要變成多復雜呀?挖坑也不帶這么挖的呀。

那么怎么辦呢?下次再說。(好吧,現(xiàn)在還沒想好,似乎要寫組件,或者要用到插槽)感謝大家對腳本之家的支持。

相關(guān)文章

  • Vue監(jiān)聽Enter鍵的方法總結(jié)與區(qū)別

    Vue監(jiān)聽Enter鍵的方法總結(jié)與區(qū)別

    這篇文章主要給大家介紹了關(guān)于Vue監(jiān)聽Enter鍵的方法與區(qū)別的相關(guān)資料,在Vue中我們可以通過監(jiān)聽鍵盤事件來實現(xiàn)回車鍵切換焦點的功能,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-10-10
  • vue組件間通信六種方式(總結(jié)篇)

    vue組件間通信六種方式(總結(jié)篇)

    組件是 vue.js最強大的功能之一,而組件實例的作用域是相互獨立的,這就意味著不同組件之間的數(shù)據(jù)無法相互引用。這篇文章主要介紹了vue組件間通信六種方式,需要的朋友可以參考下
    2019-05-05
  • Vue-cli3項目配置Vue.config.js實戰(zhàn)記錄

    Vue-cli3項目配置Vue.config.js實戰(zhàn)記錄

    這篇文章主要給大家介紹了關(guān)于Vue-cli3項目配置Vue.config.js的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-07-07
  • vue3.0 CLI - 2.5 - 了解組件的三維

    vue3.0 CLI - 2.5 - 了解組件的三維

    通過本文帶領大家去學習vue3.0 CLI - 2.5 - 了解組件的三維的相關(guān)知識,感興趣的朋友跟隨腳本之家小編一起學習吧
    2018-09-09
  • 解決vue.js this.$router.push無效的問題

    解決vue.js this.$router.push無效的問題

    今天小編就為大家分享一篇解決vue.js this.$router.push無效的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vue如何修改data中的obj數(shù)據(jù)的屬性

    vue如何修改data中的obj數(shù)據(jù)的屬性

    這篇文章主要介紹了vue如何修改data中的obj數(shù)據(jù)的屬性,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue3基礎知識剖析

    vue3基礎知識剖析

    筆者這篇文章會從vue3基礎的知識點開始剖析,特別是在將composition?API的時候,在代碼示例中不會一上來就使用setup語法糖,而是用早期的setup函數(shù),這樣方便于初學的小伙伴們理解跟學習
    2022-08-08
  • vue省市區(qū)三聯(lián)動下拉選擇組件的實現(xiàn)

    vue省市區(qū)三聯(lián)動下拉選擇組件的實現(xiàn)

    本篇文章主要介紹了vue省市區(qū)三聯(lián)動下拉選擇組件的相關(guān)知識。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-04-04
  • vue圖片加載失敗時用默認圖片替換的方法

    vue圖片加載失敗時用默認圖片替換的方法

    這篇文章主要給大家介紹了關(guān)于vue圖片加載失敗時用默認圖片替換的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用vue具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-08-08
  • VUE使用DXFParser組件解析dxf文件生成圖片的操作代碼

    VUE使用DXFParser組件解析dxf文件生成圖片的操作代碼

    這篇文章主要介紹了VUE使用DXFParser組件解析dxf文件生成圖片的操作代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09

最新評論

兖州市| 革吉县| 宁化县| 宣化县| 昭苏县| 黄山市| 寿宁县| 赤峰市| 巴林左旗| 洪湖市| 大邑县| 平远县| 日土县| 东丽区| 黔南| 明水县| 博乐市| 南安市| 闸北区| 玛纳斯县| 东兰县| 宁远县| 榆树市| 大新县| 邵阳县| 太仓市| 汉寿县| 凤山市| 保靖县| 岐山县| 中西区| 五原县| 中山市| 平谷区| 邵阳市| 北川| 珠海市| 儋州市| 沙坪坝区| 神池县| 汉川市|