自定義組件

1.首先先創(chuàng)建一個(gè)文件夾名字如:component 再在里面創(chuàng)建一個(gè)文件夾Tabs
2.在文件夾中右鍵選擇component . 寫入名字.
3.在page文件中的json中選擇usingComponents 使用鍵值對(duì)的方式
例如----"usingComponents": {
"Tabs":"../../component/tabs/tabs"
}
4.在頁(yè)面中可以直接使用Tabs當(dāng)做標(biāo)簽使用.

自定義組件的使用

直接通過代碼來(lái)解讀.
···這個(gè)是直接創(chuàng)建的自定義組件---可以進(jìn)行直接調(diào)用.
tab.xml

<view class="tabs" >
    <view class="tabs_title" >
        <!-- <view class="title_item active" >首頁(yè)</view>
        <view class="title_item" >原創(chuàng)</view>
        <view class="title_item" >分類</view>
        <view class="title_item" >關(guān)于</view> -->
        <view 
        wx:for='{{Tabs}}' 
        wx:key='id' 
        class="title_item {{item.isActive? 'active':''}}"
        bindtap = "handinput"  //添加事件
        data-index='{{index}}'  //傳遞參數(shù) 其中參數(shù)數(shù)組中有兩個(gè)參數(shù)  1.item 2.index 其中item表示該數(shù)組中的某一項(xiàng) 掸哑,而index表示這是數(shù)組的索引.
        >
         {{item.name}}  
        </view>
    </view>
    <view class="tabs_content" >
    <slot> </slot>     //這個(gè)是個(gè)占位符.
     </view>
</view>

····其中這個(gè)slot是占位符 ,
····data-index='{{index}}' 傳遞索引
這個(gè)是tab.js對(duì)里面的事件進(jìn)行修改

// component/tabs/tabs.js
Component({
  /**
   * 組件的屬性列表
   *
   * 父組件-----》子傳遞.
   **/
  properties: {
    //接收數(shù)據(jù)的名稱  必須要和頁(yè)面上的名稱一致
    // aaa:{
    //   //type 表示接收的數(shù)據(jù)類型
    //   type:String,
    //   //表示默認(rèn)值 ,若是沒有就是這個(gè)值 
    //   value:''
    // },
    Tabs:{
      type:Array,
      value:[]
    }
  },

  /**
   * 組件的初始數(shù)據(jù)
   */
  data: {
   

  },

  /**
   * 組件的方法列表
   * 1.頁(yè)面的函數(shù)需要放到Data的同層級(jí)下!=舫!
   * 2.組件中需要放到method中.Aバ!B┮妗!
   */
  methods: {
    handinput(e){
      //可能是因?yàn)槌A克孕枰⒁?
      const {index} =e.currentTarget.dataset;   //獲取傳遞進(jìn)來(lái)的參數(shù).
      this.triggerEvent("itemChange",{index});   //這個(gè)是將組件的參數(shù)傳遞到頁(yè)面上.
      //this.data獲取data中的數(shù)組.兩種意思相同.
      // let {Tabs}=this.data;
      // let Tabs=this.data.Tabs;
      // Tabs.forEach((v,i) =>i===index?v.isActive=true:v.isActive=false);
      // this.setData({
      //   Tabs:Tabs
      // })
  
    }
  }
})

···父組件傳參數(shù)給組件
···事件跟頁(yè)面有些區(qū)別 只能放到 methods中
···this.triggerEvent("itemChange",{index}); //這個(gè)是將組件的參數(shù)傳遞到頁(yè)面上. itemChange傳遞的名字 深胳, index傳遞的數(shù)據(jù).
··· Tabs.forEach((v,i) =>i===index?v.isActive=true:v.isActive=false);這個(gè)foreach循環(huán)會(huì)將數(shù)組中的數(shù)據(jù)在循環(huán)中改變.--->Tabs ,v是里面的數(shù)組 绰疤,i是索引.

頁(yè)面的調(diào)用自定義的組件
demo16.xml

  1.父組件(頁(yè)面) 向子組件 傳遞數(shù)據(jù) 通過 標(biāo)簽屬性的方式
        1.在子組件上進(jìn)行接收. 

-->
<Tabs Tabs="{{Tabs}}"  binditemChange="handins">
<view wx:if="{{Tabs[0].isActive}}">0</view>
<view wx:if="{{Tabs[1].isActive}}">1</view>
<view wx:if="{{Tabs[2].isActive}}">2</view>
<view wx:if="{{Tabs[3].isActive}}">3</view>
  
</Tabs>

···其中這個(gè)組件中的內(nèi)容就是組件的占位符.
···直接寫組件的名字, 進(jìn)行使用.
···Tabs="{{Tabs}}"--------------------------
1.父組件(頁(yè)面) 向子組件 傳遞數(shù)據(jù) 通過 標(biāo)簽屬性的方式舞终,父組件(頁(yè)面)
向子組件 傳遞數(shù)據(jù) 通過 標(biāo)簽屬性的方式.
··· binditemChange="handins" 子組件向父組件傳遞內(nèi)容.------------------------
demo.js

// pages/demo16/demo16.js
Page({

  /**
   * 頁(yè)面的初始數(shù)據(jù)
   */
  data: {
    Tabs:[
      {
        id:0,
        name:'首頁(yè)',
        isActive:true
      },
      {
        id:1,
        name:'原創(chuàng)',
        isActive:false
      },
      {
        id:2,
        name:'分類',
        isActive:false
      },
      {
        id:3,
        name:'關(guān)于',
        isActive:false
      }
    ]
  },
  handins(e){
    const index=e.detail.index;  //獲取組件傳遞過來(lái)的參數(shù)
    let Tabs=this.data.Tabs;
    Tabs.forEach((v,i) =>i===index?v.isActive=true:v.isActive=false);
    this.setData({
        Tabs:Tabs
      })
    console.log(e);
  }

})

···===是比較相等的.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末轻庆,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子权埠,更是在濱河造成了極大的恐慌榨了,老刑警劉巖煎谍,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件攘蔽,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡呐粘,警方通過查閱死者的電腦和手機(jī)满俗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)作岖,“玉大人唆垃,你說我怎么就攤上這事《焕埽” “怎么了辕万?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我渐尿,道長(zhǎng)醉途,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任砖茸,我火速辦了婚禮隘擎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘凉夯。我一直安慰自己货葬,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布劲够。 她就那樣靜靜地躺著震桶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪再沧。 梳的紋絲不亂的頭發(fā)上尼夺,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音炒瘸,去河邊找鬼淤堵。 笑死,一個(gè)胖子當(dāng)著我的面吹牛顷扩,可吹牛的內(nèi)容都是我干的拐邪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼隘截,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼扎阶!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起婶芭,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤东臀,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后犀农,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體惰赋,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年呵哨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了赁濒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡孟害,死狀恐怖拒炎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情挨务,我是刑警寧澤击你,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布玉组,位于F島的核電站,受9級(jí)特大地震影響丁侄,放射性物質(zhì)發(fā)生泄漏球切。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一绒障、第九天 我趴在偏房一處隱蔽的房頂上張望吨凑。 院中可真熱鬧,春花似錦户辱、人聲如沸鸵钝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)恩商。三九已至,卻和暖如春必逆,著一層夾襖步出監(jiān)牢的瞬間怠堪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工名眉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留粟矿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓损拢,卻偏偏與公主長(zhǎng)得像陌粹,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子福压,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355