element ui分頁器與多選框結(jié)合應(yīng)用七蜘,數(shù)據(jù)保留與回顯

前言

vue的UI框架非常多挥等,我司后臺主要是用餓了么團隊的element ui(http://element.eleme.io/#/zh-CN)開發(fā)的挂绰,順便吐槽下之前開發(fā)移動端用的是餓了么的mint ui,坑賊多项乒,有空整理下啰劲。。檀何。蝇裤。

業(yè)務(wù)場景

可以簡單理解為一個專場拼接的功能,可以往里面插入各種模塊频鉴。左邊是預(yù)覽區(qū)栓辜,右邊是控制區(qū)(木圖幫助大家腦補下emmm),一個模塊可以插入很多次垛孔,我們這里就當(dāng)只插入商品模塊藕甩,商品模塊的控制區(qū)域(展示商品小圖預(yù)覽然后可以刪除),點擊+號彈出彈層選擇商品周荐。
算了還是上個圖吧


微信截圖_20180419204707.png

彈窗就不放了狭莱,element ui 帶多選框分頁器的demo就是
把這塊拆分出來,就是預(yù)覽區(qū)的此模塊為父級組件(其上還有預(yù)覽區(qū)為最頂級組件)概作,控制區(qū)域為子組件腋妙,彈層為子組件調(diào)用的模塊
關(guān)于數(shù)據(jù)的問題的話可以使用vuex也可以$emit往上一級一級傳就不細說了。

DOM結(jié)構(gòu)

<el-table ref="productTable" :data="list" @selection-change="select" @select="choserow" border show-overflow-tooltip stripe>
  <el-table-column
    label-class-name="table_header"
    label="全選"
    type="selection"
    header-align="center"
    width="100"></el-table-column>
  <el-table-column
    label-class-name="table_header"
    label="商品名稱"
    prop="name"
    header-align="center"
    width="555">
    <template slot-scope="scope">
      <img class="productImg" :src="scope.row.img_cover"  alt="商品主圖">
      <p class="productP">
        <a>{{ scope.row.title }}</a><br>
      </p>
    </template>  
  </el-table-column>
  <el-table-column
    label-class-name="table_header"
    label="項目類型"
    prop="product_type"
    header-align="center"
    width="150"></el-table-column>
  <el-table-column
    label-class-name="table_header"
    label="上架時間"
    prop="online_date"
    header-align="center"
    width="250"></el-table-column>
  <el-pagination class="page" ref="elPagition"
        background
        layout="prev, pager, next"
        :total="pagination.total"
        :page-size="+pagination.page_size"
        :current-page="pagination.page"
        @current-change="page"
      ></el-pagination>
</el-table>

數(shù)據(jù)

data() {
  return {
    is_visible: false, // todo: 彈層是否可以顯示
    list: [], // 列表數(shù)據(jù)源
    selected: [], // 真實選中的值讯榕,用于最后返回
    pagination: {
      page: 1,
      page_size: Number,
      total: 1
    },
    menu1List: [],  //篩選相關(guān) 三級層連
    menu2List: [],
    itemList: [],
    checkList: [], // 記錄之前選中的
    title: '', // 搜索后不清空雙向綁定的值
    tname: '', // 同上骤素,拿來搜索的值
    form: {
      item_id: '',
      menu1_id: '',
      menu2_id: '',
    }
  }
},

功能梳理

1匙睹、表格經(jīng)過搜索、分頁后谆甜,數(shù)據(jù)保留

table綁定的selection-change只能拿到當(dāng)前表格選中的值垃僚,因此要設(shè)置兩個數(shù)組。每次觸發(fā)selection-change將當(dāng)前結(jié)果放入selected规辱,當(dāng)list重新刷新之前,處理checkList

this.checkList = this.unique( this.checkList.concat( this.selected ) )

unique( arr ) {
  // 帶有g(shù)etset的對象似乎不能用es6數(shù)組去重
  // return Array.from(new Set(arr))
  // const res = new Map();
  // return arr.filter((a) => !res.has(a) && res.set(a, 1))
  let hash = {}
  return arr.reduce( function ( item, next ) {
    hash[next.pid] ? '' : hash[next.pid] = true && item.push( next )
    return item
  }, [] )
},

2栽燕、自動勾選

很顯然我們這個需求是可以選中已有模塊罕袋,此時彈窗時數(shù)據(jù)應(yīng)同步到table中并選中相應(yīng)元素。其次在換頁碍岔、重新搜索時浴讯,也應(yīng)把checkList內(nèi)的值重新選中。
因為實在沒找著column api里有關(guān)于默認(rèn)勾選的設(shè)置蔼啦,或許是我眼瞎榆纽,求指正。捏肢。奈籽。 就只能在頁面組件load、list刷新時手動勾選鸵赫。

//其他組件可以通過調(diào)用此ref的load()來調(diào)出
load( ...rest ) {
  ...//通過參數(shù)傳好checkList后
  this.autoSelect( this.checkList )
},
autoSelect( arr ) {
  this.$nextTick( () => {
    if ( this.list !== undefined && arr !== undefined ) {
      this.list.forEach( ( v, i ) => {
        arr.forEach( ( _v, _i ) => {
          if ( v.pid === _v.pid ) {
            this.$refs.productTable.toggleRowSelection( v, true )
          }
        } )
      } )
    }
  } )
},

3衣屏、切換模塊table重置

table模塊只存在一個,因此每次load的時候都需要重置搜索條件辩棒、page狼忱。但是手動修改data里面的current-page對應(yīng)的值是失效的。
比如走之前是2一睁,關(guān)閉了(或者重新打開時)需要重設(shè)page钻弄,當(dāng)前page是1,但是分頁器組件內(nèi)依舊是2者吁,因此再切換到2分頁的時候不會觸發(fā)事件窘俺。
我們可以在監(jiān)聽彈層的is_visible

watch: {
    is_visible() {
      // 頁碼為其他關(guān)閉彈層后 再打開彈層應(yīng)當(dāng)將當(dāng)前page設(shè)為1,需要同時設(shè)置分頁器內(nèi)的lastEmittedPage為1砚偶,否則會出點了頁碼沒反應(yīng)的bug
      !this.is_visible && ( this.$refs.elPagition.lastEmittedPage = 1 )
    }
  },

這樣既可

順便求推薦一波坑少的UI框架

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末批销,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子染坯,更是在濱河造成了極大的恐慌均芽,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件单鹿,死亡現(xiàn)場離奇詭異掀宋,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門劲妙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來湃鹊,“玉大人,你說我怎么就攤上這事镣奋”液牵” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵侨颈,是天一觀的道長余赢。 經(jīng)常有香客問我,道長哈垢,這世上最難降的妖魔是什么妻柒? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮耘分,結(jié)果婚禮上举塔,老公的妹妹穿的比我還像新娘。我一直安慰自己求泰,他們只是感情好央渣,可當(dāng)我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拜秧,像睡著了一般痹屹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上枉氮,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天志衍,我揣著相機與錄音,去河邊找鬼聊替。 笑死楼肪,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的惹悄。 我是一名探鬼主播春叫,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼泣港!你這毒婦竟也來了暂殖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤当纱,失蹤者是張志新(化名)和其女友劉穎呛每,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坡氯,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡晨横,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年洋腮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片手形。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡啥供,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出库糠,到底是詐尸還是另有隱情伙狐,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布曼玩,位于F島的核電站鳞骤,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏黍判。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一篙梢、第九天 我趴在偏房一處隱蔽的房頂上張望顷帖。 院中可真熱鬧,春花似錦渤滞、人聲如沸贬墩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽陶舞。三九已至,卻和暖如春绪励,著一層夾襖步出監(jiān)牢的瞬間肿孵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工疏魏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留停做,地道東北人。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓大莫,卻偏偏與公主長得像蛉腌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子只厘,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,163評論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫烙丛、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,105評論 4 62
  • 前些天華為裁員風(fēng)波鬧得沸沸揚揚羔味,被裁員的均為34歲以上的老員工河咽。想想自己也混混沌沌的到了36歲的光景,趕緊上招聘網(wǎng)...
    俞創(chuàng)木閱讀 231評論 0 2
  • 隨手點開簡書介评,看看緩緩增加的篇幅量库北,心里甚是慚愧爬舰,大半年過去了,才寫了二十幾篇寒瓦,速度太慢呀情屹,我對自己說。不由自主地...
    走過不惑閱讀 437評論 0 2
  • 記錄三件好事 1 睡到自然醒杂腰,快11點了垃你。起來漱口吃早餐。出到街上買了兩盒月餅寄給阿艷喂很。 一個人收到禮物總會歡喜的...
    梁超文閱讀 1,917評論 0 3