1. 程式人生 > >使用mint-ui開發項目的一些所得

使用mint-ui開發項目的一些所得

ogg logs pick 裏的 change temp icon wrap 周期

使用mint-ui開發項目的一些所得

Mint-ui:

1、Cell

開發過程中,有時需要修改mt-cell自帶的icon和value的標簽樣式,這時我們可以在<mt-cell></mt-cell>內新添如下標簽進行改寫:

<si-cell class="user-cell item-cell" title="當前產品" to="/selectproduct" is-link>

      <i class="siiconfont siicon-product"></i>

      <span>{{productSelected}}</
span> </si-cell>

mt-cell無法直接綁定v-click事件,修改做法可以在<mt-cell></mt-cell>外面包一層<div></div>,在div上綁定click事件,代碼可參照第2點search中的代碼;

2、Search

通常情況下我們的參數不會直接是一個數組,可能需要對數據進行一些自定義處理,我的寫法如下:

<si-search v-model="value" :result="filterResult">

      <div v-for="item in filterResult"
:key="item" @click="switchCustomer(item)"> <si-cell :title="item"></si-cell> </div> </si-search>

filterResult是計算屬性,以此過濾好後臺傳來的數據後,再將其綁定在cell外的div層,還可以如第1點所說的綁定click事件,此處filterResult進行了中英文過濾,可以通過數據的中文名和英文名兩個屬性進行搜索。

    filterResult() {
      var that = this;
      that.defaultResult 
= []; var re = /^[a-zA-Z]+$/; var data = that.result.data; var val = that.value; if (re.test(val)) { for (var i = 0;i < data.length;i++) { console.log(data[i].englishname); if (new RegExp(val, ‘i‘).test(data[i].englishname)) { that.defaultResult.push(data[i].title); } } return that.defaultResult; } else { for (var i = 0;i < data.length;i++) { that.defaultResult.push(data[i].title); } return that.defaultResult.filter(value => new RegExp(val, ‘i‘).test(value)); } }

3、Tabbar

通常情況下,底部的tabbar欄是需要在多頁面復用的,所以可以獨立成一個組件,然後通過外部容器作為父組件進行使用,切換tab的同時,tabbar需要向父組件傳遞選中的一個自定義的tabchange事件

selectTab: function(id) {
  this.$emit(‘tabchange‘, id);
}

父組件接收自定義事件tabchange,觸發setSelected函數進行數據更新,通過數據驅動視圖更新:

<si-tabbar :Selected="selected" @tabchange="setSelected"></si-tabbar>

修改selected的值來切換tab

setSelected: function(data) {
  this.selected = data;
  this.tabToggle(data);
}

template內有關tab-container裏的代碼如下:

<div class="page-wrap">
  <si-tab-container class="page-tabbar-container" v-model="selected">
    <si-tab-container-item id="konwledge">
      <si-news></si-news>
    </si-tab-container-item>
    <si-tab-container-item id="dashboard">
      <si-overview></si-overview>
    </si-tab-container-item>
    <si-tab-container-item id="report">
      <si-report></si-report>
    </si-tab-container-item>
    <si-tab-container-item id="user">
      <si-user></si-user>
    </si-tab-container-item>
  </si-tab-container>
</div>

4、Header

mt-header的title因為是mint-ui框架自帶生成的,所以在父組件上我們可能無法在title上綁定click事件,但功能需求中有這樣的要求:

雖然應該極力避免直接操作dom,但目前我的解決方法還在頁面渲染完成之後,在mounted的生命周期中用原生js綁定click事件,因為此時html元素已經生成,所以可以綁定到title的標簽<h1>。

mounted () {

    // 綁定click事件到mint-ui自動生成的頭部標題上

    var h1 = document.getElementsByTagName(‘h1‘);

    var that = this;

    if (that.headOptions.isTitleIcon == true) {

      h1[0].addEventListener("click",function() {

        that.$router.push({path: ‘/selectproduct‘});

      })

    }

  },

5、datetime-picker

使用該組件一定要註意mint-ui的版本,2.2.5以上才可以,版本低會導致無法正常調用open方法顯示datetime-picker。

open(picker) {
  this.$refs[picker].open();
}

使用mint-ui開發項目的一些所得