1. 程式人生 > >vue元件系列4、Table封裝上

vue元件系列4、Table封裝上

開發十年,就只剩下這套架構體系了! >>>   

為了少用element UI 元件,自己改的方便,所以自己倒騰。。。

要封裝Table必須要解決不同業務情況下的資料繫結,而處理這個就要先搞定 slot 這個佔位符

整個過程如下,註釋都在程式碼裡,

slot 測試外掛部分

<template>
  <div class="mydiv">
    <h3>test-slot</h3>
    <!-- 父元件裡的span會替換掉slot所以這裡的123是看不見的 -->
    <!-- 如果父元件在使用子元件testSlot的時候不在裡面加內容則這裡的slot會顯示出來 -->
    <!-- <slot>123</slot> -->
    <p>=================================</p>
    <!-- <h3>站位指定名稱放入</h3> -->
    <div class="noneSlot">
      <slot></slot>
    </div>
    <div class="test-two">
      <slot name="two"></slot>
    </div>
    <div class="test-one">
      <slot name="one"></slot>
    </div>
    <p>=================================</p>

    <table class="pre_tab">
      <tbody>
        <slot name="tab_title"></slot>
        <slot name="tab_tr" v-for="data_tr in data_tab" :item="data_tr"></slot>
      </tbody>
    </table>
  </div>
</template> 
 
<script>
export default { 
  name:"test_slot",
  data(){
    return {
      data_tab: [],
    }
  },
  props:{
    pre_data_tab:Array,
  },
  watch:{
    pre_data_tab(val){
      this.data_tab=val;
      console.log(this.data_tab);
    }
  },
  methods:{
    lookdata:function(td){            

    }
  }
}
</script>

<style scoped>
.mydiv {
  width: 100%;
  text-align: center;
}
.pre_tab {
  width: 100%;
  text-align: center;
  background-color: yellowgreen;
}
</style>

呼叫部分

<template>
  <div id="app">
    <test-slot :pre_data_tab="data">
      <!-- <span>我是父元件裡的文字,但是我要被放到子元件裡</span> -->

      <!-- slot=one這個div會替換掉子元件裡name="one"的slot標籤 -->
      <div slot="one">
        <span>one</span>
        <span>第一個</span>
      </div>
      <!-- 這個div沒有用slot指定名字所以會替換掉子元件裡沒有name屬性的slot標籤 -->
      <div>
        <span>此div沒有slot ,slot如果沒有名稱,則會多次放入</span>
      </div>
      <!-- slot=two這個div會替換掉子元件裡name="two"的slot標籤 -->
      <div slot="two">
        <span>two</span>
        <span>第二個</span>
      </div>
      <!-- 設定標題  -->
      <template slot="tab_title">
        <tr>
          <th>ID</th>
          <th>名稱</th>
          <th>地址</th>
        </tr>
      </template>
      <!-- user 相當於一個wrapper,容器 -->
      <!-- user.item 對應 子元件的  :item="data_tr" 這裡 item -->
      <!-- table可以封裝到 表格,資料載入,重新整理,分頁 只需要傳入URL就可以了 具體的增刪改業務 單獨完成 -->
      <template slot="tab_tr" slot-scope="user">
        <tr>
          <td>{{ user.item.id }}</td>
          <td class="td_name">{{ user.item.name }}</td>
          <td>{{ user.item.addr }}</td>
          <td><button @click="fun_add(user.item)">增加</button></td>
        </tr>
      </template>
    </test-slot>

    <button @click="loaddata">載入資料</button>
  </div>
</template> 

<script>
export default {
  data(){
    return {
      data:[]      
    }
  },
  components:{    
    "test-slot": () => import("./children/testSlot")
  },
  created:function(){
    this.loaddata();
  },
  methods:{
    loaddata:function(){
      this.data=[
        {id:"1",name:"tom",addr:"usa"},
        {id:"2",name:"小明",addr:"陝西"},
        {id:"3",name:"小花",addr:"山西"}
      ];      
      console.log('模擬初始化資料完畢');
    },
    fun_add:function(item){
      console.log(item.id+' '+item.name+' '+item.addr);      
    }
  }
}
</script>

<style>
.my_title {
  background-color: aqua;
  margin-right: 20px;
  text-align: center;
  font-size: 16px;
}

.td_name {
  color: red;
  font-size: 20px;
}
</style>

執行結果和過程。

相關推薦

vue元件系列4Table封裝

開發十年,就只剩下這套架構體系了! >>>   

vue元件系列4Table封裝

開發十年,就只剩下這套架構體系了! >>>   

vue元件系列2拖放

開發十年,就只剩下這套架構體系了! >>>   

VUE元件系列7:Table封裝3

前面寫的Table封裝,只是省了一部分事情,還是需要通過slot配置表結構,沒有達到一開始的想法: 只配置一個載入url和一個增

vue元件系列6雙向繫結方法

開發十年,就只剩下這套架構體系了! >>>   

PADS學習2(封裝元件型別PART 邏輯封裝庫CAE)

altium designer中封裝的型別很簡單:包括元器件封裝(原理圖)、PCB封裝(PCB圖)。在元器件封裝中可以直接選用所需的PCB封裝。 PADS中,使用元件型別PART表示一個完整器件。PART中可以選擇所需的PCB封裝與CAE封裝。用慣了altium designer的人,剛

Vue元件化(全域性區域性)props傳參

目錄 全域性元件化 區域性元件化 全域性元件化 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Do

JS元件系列——在ABP中封裝BootstrapTable

 前言:關於ABP框架,博主關注差不多有兩年了吧,一直遲遲沒有嘗試。一方面博主覺得像這種複雜的開發框架肯定有它的過人之處,系統的穩定性和健壯性比一般的開源框架肯定強很多,可是另一方面每每想到它繁瑣的封裝和複雜的開發流程就望而卻步,就這樣遲遲沒有行動。最近在專案裡面用到了ABP框架,沒辦法,只有硬著頭皮上了。經

基於vue element 封裝元件

 基於vue element封裝的上傳元件 使用方法: 1.首先引入該元件 2.註冊元件 3.頁面使用 4.回撥函式(如需其他回撥自行封裝 因為我暫時沒用到其他的  哈哈哈)   <template>

VUE 餓了麼元件 1.4 table 屬性之一

<el-table :data="Data.list" style="width: 100%" tooltip-effect="light"> 程式碼中有二點介紹 :data 繫結的資料是 VUE 的 data.list 模板樣式風格是淺色系的。 tooltip

Vue開發——封裝傳檔案元件

使用elementui的 el-upload外掛實現圖片上傳元件每個專案存在一定的特殊性,所以資料的處理會不同 pictureupload.vue:<template>    <div

最全面的SignalR系列教程-4SignalR 自託管全解(使用Self-Host)-附各終端詳細例項

1、概述 通過前面幾篇文章 史上最全面的SignalR系列教程-1、認識SignalR 史上最全面的SignalR系列教程-2、SignalR 實現推送功能-永久連線類實現方式 史上最全面的SignalR系列教程-3、SignalR 實現推送功能-集線器類實現方式 我們對SignalR的概念以及SignalR

封裝Vue Element的可編輯table表格元件

前一段時間,有博友在我那篇封裝Vue Element的table表格元件的博文下邊留言說有沒有那種“表格行內編輯”的封裝元件,我當時說我沒有封裝過這樣的元件,因為一直以來在實際開發中也沒有遇到過這樣的需求,但我當時給他提供了一個思路。 時間過去了這麼久,公司的各種需求也不停地往外冒,什麼地圖圖表、表格行內編

PHP面向對象的三大特征操作——封裝繼承多態()

function 有一個 私有 urn 變量賦值 魔術方法 var public 安全 <?php //三大特征:封裝、繼承、多態 //封裝做法:1.將成員變量變為私有2.在類中做方法間接操作成員變量3.在方法裏加控制條件 //封裝目的:使類更加安全/* class

[js高手之路]深入淺出webpack教程系列4-插件使用之html-webpack-plugin配置()

技術 輸出 js函數 動態生成 git tro mon ebp 執行 還記得我們上文中的index.html文件嗎? 那裏面的script標簽還是寫死的index.bundle.js文件,那麽怎麽把他們變成動態的index.html文件,這個動態生成的index.html文

Vue.js系列vue-router() (轉載自向朔1992)

app 指定 路徑和 其他 發現 掛載 我只 router mine 概述 Vue非常適用於實踐單頁面應用程序也就是平時大家說的比較多的SPA(single page application),這點應該了解過Vue的應該都知道吧。一般的單頁面應用是基於路由或頁面之間的鏈接來

git的下載項目傳與拷貝+vue-cli的使用

es2017 cli vue alt block 圖片 img right isp git的下載、項目上傳與拷貝+vue-cli的使用

4計算機的存儲之內存 - 計算機硬件學習系列文章

強制 好的 tun 全部 命中 ddr area 出廠 兼容性 內存是計算機中重要的部件之一,它是與CPU進行溝通的橋梁。計算機中所有程序的運行都是在內存中進行的,因此內存的性能對計算機的影響非常大。內存(Memory)也被稱為內存儲器,其作用是用於暫時存放CPU中的運算數

vue元件開發之導航選單元件封裝

執行結果: 呼叫程式碼部分: <template> <div id="app"> <menu-bar :list="list" @click="menuClick"></menu-bar> <!--fir

4對各頁面元素及方法進行封裝

所謂的POM(Page Object Model)設計模式其實就是把一個頁面當作一個物件,將一個頁面中的所有元素及方法封裝在一個java類中。 下面封裝了3個頁面的元素: 依次開啟看看吧。 1、home_baidu.py # -*- coding:utf-8 -*- from fra