最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
怎么在微信小程序中自定義select下拉選項框組件

今天就跟大家聊聊有關(guān)怎么在微信小程序中自定義select下拉選項框組件,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設,江夏企業(yè)網(wǎng)站建設,江夏品牌網(wǎng)站建設,網(wǎng)站定制,江夏網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,江夏網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

第一步:創(chuàng)建組件所需的文件

我喜歡把共用的內(nèi)容都放在和pages文件同級的地方,所以有了下面的目錄結(jié)構(gòu)

怎么在微信小程序中自定義select下拉選項框組件

(1) 先創(chuàng)建一個自定義名字的文件夾,例如我上面的Componet

(2) 再創(chuàng)建一個select文件夾,然后:右鍵這個文件夾,新建下面的這個Component。然后輸入需要創(chuàng)建的名稱,我這里為了方便就取了select的名字。然后就會自動創(chuàng)建4個文件,js、json、wxml、wxss。

怎么在微信小程序中自定義select下拉選項框組件

第二步:開始配置組件

注意:如果通過第一步創(chuàng)建的可直接跳過第二步。

(1) 通過第一步創(chuàng)建的組件的文件夾中,已經(jīng)自動配置好了。只需在引入組件的時候,在引入組件的頁面的json文件中配置組件的名稱和組件的位置。

(2) 如果自己手動創(chuàng)建組件的js、json、wxml、wxss這個文件,那么需要在json文件中填入 "component": true 表示自定義組件聲明。js文件中也需要寫成這種格式:

Component({
 properties: {
  // 這里定義了innerText屬性,屬性值可以在組件使用時指定
  innerText: {
   type: String,
   value: 'default value',
  }
 },
 data: {
  // 這里是一些組件內(nèi)部數(shù)據(jù)
  someData: {}
 },
 methods: {
  // 這里是一個自定義方法
  customMethod: function(){}
 }
})

第三步:自定義組件樣式及js。

注意:這里可以在 app.json 的 pages 中把組件所在的頁面放到第一位,這樣就能在組件的頁面編寫代碼了,比如我上面的目錄結(jié)構(gòu):就需要寫成 "Componet/select/select", 后面再是其它的頁面。這樣方便得多。

1. 組件的wxml


  
    {{nowText}}
    
  
  
    {{item.text}}
  

(1)  animation="{{animationData}}" 這個是下箭頭的動畫效果

(2)  data-index="{{index}}" 這個是當前元素被點擊時的索引

(3) selectToggle是模仿下拉選項框隱藏和顯示的事件。

(4) setText是模仿下拉選項框選擇子項之后,設置內(nèi)容的事件。

(5) selectShow是表示option選項顯示與否

2. 組件的wxss

.com-selectBox{
  width: 200px;
}
.com-sContent{
  border: 1px solid #e2e2e2;
  background: white;
  font-size: 16px;
  position: relative;
  height: 30px;
  line-height: 30px;
}
.com-sImg{
  position: absolute;
  right: 10px;
  top: 11px;
  width: 16px;
  height: 9px;
  transition: all .3s ease;
}
.com-sTxt{
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  padding:0 20px 0 6px;
  font-size: 14px;
}
.com-sList{
  background: white;
  width: inherit;
  position: absolute;
  border: 1px solid #e2e2e2;
  border-top: none;
  box-sizing: border-box;
  z-index: 3;
  max-height: 120px;
  overflow: auto;
}
.com-sItem{
  height: 30px;
  line-height: 30px;
  border-top: 1px solid #e2e2e2;
  padding: 0 6px;
  text-align: left;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 14px;
}
.com-sItem:first-child{
  border-top: none;
}

 3. 組件的 js

// Componet/Componet.js
Component({
 /**
  * 組件的屬性列表
  */
  properties: {
    propArray:{
      type:Array,
    }
  },
 /**
  * 組件的初始數(shù)據(jù)
  */
  data: {
    selectShow:false,//初始option不顯示
    nowText:"請選擇",//初始內(nèi)容
    animationData:{}//右邊箭頭的動畫
  },
 /**
  * 組件的方法列表
  */
  methods: {
   //option的顯示與否
    selectToggle:function(){
      var nowShow=this.data.selectShow;//獲取當前option顯示的狀態(tài)
      //創(chuàng)建動畫
      var animation = wx.createAnimation({
        timingFunction:"ease"
      })
      this.animation=animation;
      if(nowShow){
        animation.rotate(0).step();
        this.setData({
          animationData: animation.export()
        })
      }else{
        animation.rotate(180).step();        
        this.setData({
          animationData: animation.export()
        })
      }
      this.setData({
        selectShow: !nowShow
      })
    },
    //設置內(nèi)容
    setText:function(e){
      var nowData = this.properties.propArray;//當前option的數(shù)據(jù)是引入組件的頁面?zhèn)鬟^來的,所以這里獲取數(shù)據(jù)只有通過this.properties
      var nowIdx = e.target.dataset.index;//當前點擊的索引
      var nowText = nowData[nowIdx].text;//當前點擊的內(nèi)容
      //再次執(zhí)行動畫,注意這里一定,一定,一定是this.animation來使用動畫
      this.animation.rotate(0).step();
      this.setData({
        selectShow: false,
        nowText:nowText,
        animationData: this.animation.export()
      })
    }
  }
})

(1) 組件的 properties 屬性是對外屬性,我理解的是可以當做 data 數(shù)據(jù)來使用,它是一個含有三個屬性的對象,分別是 type 表示屬性類型、 value 表示屬性初始值、 observer 表示屬性值被更改時的響應函數(shù)。type 是必填的,其它的可選。如果只有 type,可以寫成:屬性名:type類型。

(2) 組件的 data 和普通頁面的data一樣,是組件的內(nèi)部數(shù)據(jù),和 properties 一同用于組件的模版渲染。

(3) 組件的 method 是專門用于 事件響應函數(shù) 和 任意的自定義方法。在這里面獲取數(shù)據(jù)有兩種方法:一種是獲取data里的數(shù)據(jù): this.data.屬性名;一種是獲取 properties 中的屬性值: this.properties.屬性名

(4) 創(chuàng)建animation動畫,作用在通過 true 和 false 切換顯示狀態(tài)的內(nèi)容上沒有過渡、沒有過渡、沒有過渡。

第四步:引入組件,傳入組件所需數(shù)據(jù)

1. 引入前,需要在引入組件的頁面的json文件中配置,比如我要在 index.wxml 中引入,那么在 index.json 中我就需要配置:

"usingComponents": {
  "Select": "/Componet/select/select"
}

(1) Select 是你定義的組件的名稱,后面的是組件所在的位置。 /  單斜杠表示根目錄,是絕對路徑。

(2) 如果出現(xiàn)下面這種說沒找到路徑的,一定是自己填寫的路徑不對,認真查找。

怎么在微信小程序中自定義select下拉選項框組件

2. 配置好后,就可以引入組件。

(1) prop-array 是我自定義的屬性名,這個是和組件所在的 js 中properties中的屬性是對應的。在 properties 定義的屬性中,屬性名采用駝峰寫法(例如:propArray);在引入組件的 wxml 中,指定屬性值時則對應使用連字符寫法(例如:prop-array="...")。

3. 最后就是傳入數(shù)據(jù)了。在引入組件的js的data中,添加:

selectArray: [{
  "id": "10",
  "text": "會計類"
}, {
  "id": "21",
  "text": "工程類"
}]

 最終結(jié)果:

怎么在微信小程序中自定義select下拉選項框組件

 如果引入兩個相同的組件,傳入的數(shù)據(jù)也相同:


看完上述內(nèi)容,你們對怎么在微信小程序中自定義select下拉選項框組件有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


文章標題:怎么在微信小程序中自定義select下拉選項框組件
網(wǎng)站網(wǎng)址:http://fisionsoft.com.cn/article/ghjcdi.html