欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何根據(jù)業(yè)務(wù)封裝自己的功能組件

 更新時(shí)間:2019年04月19日 14:39:17   作者:木公呢  
這篇文章主要介紹了Vue封裝功能組件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

查詢回顯input的封

最近有幸在做一個(gè)管理系統(tǒng)采用的是vue+element-ui, 表單頁(yè)面非常多, 而且都出奇的大,在多頁(yè)面開(kāi)發(fā)的時(shí)候做大表單的優(yōu)缺點(diǎn)我大概先說(shuō)一下, 我們的任務(wù)是, 基于現(xiàn)在的工具, 使他更簡(jiǎn)潔, 功能也不差, 而且更利于開(kāi)發(fā), 維護(hù)

直接進(jìn)入正題

功能是這樣:

表單中常有的功能是一個(gè)input綁定一個(gè)按鈕, 當(dāng)我點(diǎn)擊按鈕的時(shí)候, 彈出查詢框, 里面有個(gè)小列表, 查到數(shù)據(jù)后點(diǎn)一行再回顯, 很簡(jiǎn)單的需求, 但是會(huì)有大量的應(yīng)用地點(diǎn), 所以肯定不能復(fù)制粘貼, 輸入框我們每次都可以寫(xiě), 但是彈出來(lái)的小查詢?nèi)绻總€(gè)表單, 每個(gè)獨(dú)立的彈框再去重復(fù)寫(xiě)就麻煩了, 但是如果我們把它提出來(lái)我們就輕松很多, 通過(guò)數(shù)據(jù)去控制功能

有些人可能覺(jué)得都是廢話, 而且就這么個(gè)簡(jiǎn)單的東西, 寫(xiě)這么多有必要么(我想盡量的把我想到的說(shuō)出來(lái), 手動(dòng)滑稽)

要做的就是這個(gè)查詢的小列表, 我們整理一下要做的事情, 先做規(guī)劃再寫(xiě)代碼, 避免邊寫(xiě)邊改, 不然會(huì)讓代碼越來(lái)越難維護(hù), 寫(xiě)到下面發(fā)現(xiàn)上面不該那么寫(xiě), 再去改又懶的改, 然后就郁悶著勉為其難的提交上去了, 雖然功能在但自己看著都......

1. 分析需求: 我們需要什么元素?

  1. a. 一個(gè)form表單, 一個(gè)table, 分頁(yè)(布局)
  2. b. n個(gè)條件框, 查詢按鈕, 重置按鈕, 其他功能按鈕(form內(nèi)部)

通過(guò)整理元素我們知道, 有幾樣?xùn)|西是固定的, 一個(gè)form, 一個(gè)不知道幾列的table, 一個(gè)分頁(yè)功能,查詢, 重置按鈕

整理出這個(gè)我們就可以第一步把元素構(gòu)建全, 可能有n個(gè)的我們就用一個(gè)先占個(gè)位置, 結(jié)構(gòu)如下:

<div class="box">
 <div class="form">
  <form action="">
   <input type="text"> *n
  </form>
 </div>
 <div class="table">
  <table>
   <tr> *n
    <td></td>
   </tr>
  </table>
 </div>
 <div class="paging"></div>
 <div class="button">
  <button>查詢</button>
  <button>重置</button>
  <button>其余功能</button> *n
 </div>
</div>

*n的地方代表了接下來(lái)我們要用循環(huán)創(chuàng)建

2. 我們需要實(shí)現(xiàn)什么方法并且那些是要外部傳遞的

  1. a. 查詢
  2. b. 點(diǎn)擊分頁(yè)后查詢數(shù)據(jù)
  3. c. 重置
  4. d. 選中一行時(shí)拿到數(shù)據(jù)
  5. e. 其余功能的觸發(fā)

這樣一梳理, 就很清晰了, 因?yàn)槲覀兊牟閿?shù)據(jù)和分頁(yè)在一個(gè)接口中我就講分頁(yè)查詢, 和普通查詢放到了一個(gè)函數(shù)里, 所以methods中實(shí)現(xiàn)剩下的四個(gè)方法

methods: {
 searchData(pageNum = 0) {
  //查詢數(shù)據(jù), ES6參數(shù)賦值默認(rèn)為0頁(yè)
 },
 selectRowData(row) {
  //選中單行是觸發(fā)的函數(shù), 在各個(gè)ui框架table中都應(yīng)該有這個(gè)方法, 我們只要實(shí)現(xiàn)它就行了
 },
 resetSearchForm() {
  //重置form參數(shù)
 },
 doFunction(){
  //執(zhí)行其他函數(shù)
 }
}

好了, 接下來(lái)看看那些需要是外部傳入的方法, 以及為什么要從外部傳入

i. 首先是一個(gè)查詢數(shù)據(jù)的方法

理由: 我們需要從外部傳入, 這是個(gè)查詢列表的組件, 我們肯定不是只適用于一個(gè)接口, 而是盡量讓他各種各樣情形下都適用于我們

ii. 選中單行后要傳給父組件的方法

在vue中, 子組件是不能修改父組件的, 在框架封裝中大部分是作者自己封裝了dispatch 和 broadcast, 但是我們就應(yīng)用于自己的項(xiàng)目, 所以我們不用那么麻煩, 如果想用可以去ui框架源碼中復(fù)制一份出來(lái)用, 我們就通過(guò)父組件傳一個(gè)函數(shù)給子組件, 然后子組件調(diào)用這個(gè)函數(shù)回調(diào)給父組件就好了, 所以要傳一個(gè)函數(shù)

iii. 其他的執(zhí)行函數(shù)

3. 我們要vue的data參數(shù)了, 并確定哪些是在組件中, 哪些是外部傳入

a. from表單的數(shù)據(jù)綁定(但是我們不確定要有幾個(gè)框所以這里要多留一步)

沒(méi)錯(cuò)就這一個(gè)就夠了, 我們要做的是可動(dòng)態(tài)配置所以更多的來(lái)自于傳參

  1. a. 傳入一個(gè)input數(shù)組, 決定有幾個(gè)條件搜索框
  2. b. 傳入table的列的數(shù)組, 附帶上每列寬度, 列名
  3. c. 傳入其他功能按鈕列表數(shù)組
  4. d. 傳入查詢出來(lái)的分頁(yè)參數(shù)
  5. e. 傳入查詢出來(lái)的數(shù)據(jù)列表數(shù)組

4. 有了這些我們接下來(lái)就是一一實(shí)現(xiàn)這些東西就好了

還是先從結(jié)構(gòu)開(kāi)始

 <div class="searchAlert">
   <div class="inputBox">
    <el-form :inline="true" :model="searchForm" class="searchAlertForm" ref="searchForm">
    <!--循環(huán)創(chuàng)建條件搜索框-->
     <el-form-item v-for="item in inputarr" :key="item.label" :prop="item.dataName">
      <el-tooltip :content="item.label" placement="top">
       <el-input v-model="searchForm[item.dataName]" :placeholder="item.label" size="mini"></el-input>
      </el-tooltip>
     </el-form-item>
    </el-form>
   </div>
   <div class="tableBox">
    <el-table :data="searchdatalist" style="width: 100%" size="mini" highlight-current-row
     @current-change="selectrowdata" :border="true">
     <!--循環(huán)創(chuàng)建table列-->
     <el-table-column v-for="item in coleumarr" :key="item.label" :prop="item.prop" :label="item.label"
      :width="item.width">
     </el-table-column>
    </el-table>
   </div>
   <!--判斷是否顯示頁(yè)碼條-->
   <div class="pagination" v-if="searchpaging">
    <el-pagination layout="prev, pager, next" :total="searchpaging.totalPage" :small="true"
     :page-size="searchpaging.pageSize" @current-change="searchdata">
    </el-pagination>
   </div>
   <div class="buttonBox">
    <el-button size="mini" @click="resetsearchform">重置</el-button>
    <el-button size="mini" @click="searchdata" type="primary">搜索</el-button>
    <el-button size="mini" v-for="btn in buttonArr" :key="btn.name" size="mini" @click="doFunction(btn.name)" :type="btn.type">btn.name</el-button>
   </div>
  </div>

5. 實(shí)現(xiàn)可供循環(huán)創(chuàng)建的數(shù)組結(jié)構(gòu)

a. form(先創(chuàng)建一個(gè), 然后放到數(shù)組中就好了)

{
 label:"輸入框的名稱"
 dataName:"作為雙向數(shù)據(jù)綁定的名字, 同時(shí)作為綁定prop的名字"
}

 現(xiàn)在來(lái)看我們是不能在這個(gè)組件中直接定義好form的model結(jié)構(gòu)的, 我們就要?jiǎng)討B(tài)創(chuàng)建, 在組件中我們只要?jiǎng)?chuàng)建一個(gè)空的對(duì)象就好了

b. table-col

{
 label:"列名稱"
 prop:"對(duì)應(yīng)列內(nèi)容的字段名"
 width:"單列寬度"
}

c. button

{
 name:"事件和按鈕名字",
 type:"按鈕類型"
}

6. 接下來(lái)我們?nèi)?shí)現(xiàn)我們要傳入的方法

//回顯功能, 可以拿到單選數(shù)據(jù)
  searchCbFn(rowData) {
   console.log(rowData)
  },
  //查詢功能, 分頁(yè)等
  searchFn(formData, pageNum = 0) {
   api({formData:formData, pageData:pageNum}).then(res => {
    console.log(res.data)
    this.searchDataList = res.data.dataList
    //頁(yè)面展示 分頁(yè)大小控制
    this.searchPaging = { ...pagInfo, pageSize: 5 }
   }).catch(err => {
    throw err;
   })
  }

7. 最后我們就要補(bǔ)齊所有傳入?yún)?shù)

 searchDataList:{}
  searchPaging:{}

最后總結(jié)

這是我第一次寫(xiě)分享問(wèn), 所以應(yīng)該還欠缺寫(xiě)邏輯, 如果什么不懂, 或者建議, 請(qǐng)多多告訴我, 代碼我放在:https://github.com/wqliusong/happy有組件, 有可以直接運(yùn)行的單頁(yè)面

再說(shuō)一下我遇到的問(wèn)題吧, 一個(gè)就是vue的雙向數(shù)據(jù)綁定是可以動(dòng)態(tài)的,提醒一下大家, 對(duì)象后加動(dòng)態(tài)的名字要用[], 不能用.的, 注意我的input那里就懂了, data里的參數(shù)也可以動(dòng)態(tài)創(chuàng)建的, 有了這些我們可以解決很多問(wèn)題, 所以我們不用很在意他的初始數(shù)據(jù)格式

接下來(lái)我還會(huì)寫(xiě)一個(gè)多行編輯的組件, 雖然很多ui中也有, 但是功能都略顯單一, 可能我們程序員就是只要會(huì)1+1=2, 就能解決所有數(shù)學(xué)難題了的一幫人, 我要嘗試讓他功能豐富一點(diǎn), 在一個(gè)就是關(guān)于動(dòng)態(tài)增加驗(yàn)證條件的一些實(shí)現(xiàn), 希望大家能有點(diǎn)收獲

以上所述是小編給大家介紹的Vue封裝功能組件詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • vite項(xiàng)目如何集成eslint和prettier

    vite項(xiàng)目如何集成eslint和prettier

    這篇文章主要介紹了vite項(xiàng)目如何集成eslint和prettier問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 如何在Vue中實(shí)現(xiàn)登錄驗(yàn)證功能(代碼示例)

    如何在Vue中實(shí)現(xiàn)登錄驗(yàn)證功能(代碼示例)

    Vue是一種流行的JavaScript框架,可以幫助開(kāi)發(fā)者建立高效的Web應(yīng)用程序,本文將為您介紹如何在Vue中實(shí)現(xiàn)登錄驗(yàn)證功能,并為您提供具體的代碼示例,感興趣的朋友一起看看吧
    2023-11-11
  • 關(guān)于VueRouter導(dǎo)入的全過(guò)程

    關(guān)于VueRouter導(dǎo)入的全過(guò)程

    這篇文章主要介紹了關(guān)于VueRouter導(dǎo)入的全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue動(dòng)態(tài)改變背景圖片demo分享

    vue動(dòng)態(tài)改變背景圖片demo分享

    今天小編就為大家分享一篇vue動(dòng)態(tài)改變背景圖片demo分享,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • vue實(shí)現(xiàn)tab欄點(diǎn)擊高亮效果

    vue實(shí)現(xiàn)tab欄點(diǎn)擊高亮效果

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)tab欄點(diǎn)擊高亮效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • Vue的Props實(shí)例配置詳解

    Vue的Props實(shí)例配置詳解

    props主要用于組件的傳值,他的工作就是為了接收外面?zhèn)鬟^(guò)來(lái)的數(shù)據(jù),與data、el、ref是一個(gè)級(jí)別的配置項(xiàng),下面這篇文章主要給大家介紹了關(guān)于Vue組件如何設(shè)置Props的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • vite.config.js配置入門詳解

    vite.config.js配置入門詳解

    本文主要介紹了vite.config.js配置入門詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • vue項(xiàng)目結(jié)構(gòu)目錄超詳細(xì)介紹

    vue項(xiàng)目結(jié)構(gòu)目錄超詳細(xì)介紹

    這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目結(jié)構(gòu)目錄超詳細(xì)介紹的相關(guān)資料,Vue項(xiàng)目目錄結(jié)構(gòu)是指在開(kāi)發(fā)Vue項(xiàng)目時(shí),為了更好地組織和管理代碼,將不同的文件按照一定的規(guī)則和層次結(jié)構(gòu)進(jìn)行分類和存放的方式,需要的朋友可以參考下
    2023-12-12
  • Vue路由元信息與懶加載和模塊拆分詳細(xì)介紹

    Vue路由元信息與懶加載和模塊拆分詳細(xì)介紹

    有時(shí),你可能希望將任意信息附加到路由上,如過(guò)渡名稱、誰(shuí)可以訪問(wèn)路由等。這些事情可以通過(guò)接收屬性對(duì)象的meta屬性來(lái)實(shí)現(xiàn),并且它可以在路由地址和導(dǎo)航守衛(wèi)上都被訪問(wèn)到
    2022-09-09
  • vue中的面包屑導(dǎo)航組件實(shí)例代碼

    vue中的面包屑導(dǎo)航組件實(shí)例代碼

    這篇文章主要介紹了vue的面包屑導(dǎo)航組件,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-07-07

最新評(píng)論