小程序自定義控件(二)

1.目標(biāo)寫一個在項(xiàng)目中用的對話框廷臼。把各個知識點(diǎn)整合起來稀余。

先看最后的效果圖


圖一

屏幕快照 2018-03-10 下午7.26.04.png

2.創(chuàng)建一個對話框

2.1 編寫對話框的界面
2.1.1 對話框的wxml代碼:
<!--pages/customComponent/customComponent.wxml-->
<view class='mask' hidden='{{isHide}}'>
  <view class='dialog'>
    <view class='title' hidden='{{hideTitle}}'>{{title}}</view>
    <view class='content'>{{content}}</view>
    <view class='btn'>
      <view class='cancel' catchtap='_cancelEvent'>{{cancelText}}</view>
      <view class='confirm' catchtap='_confirmEvent'>{{confirmText}}</view>
    </view>
  </view>
</view>
2.1.2 對話框的wcss代碼:
/* pages/customComponent/customComponent.wxss */
.mask {
  position: fixed;
  z-index: 1000;
  top: 0;
  right: 0;
  left: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.3);
}

.dialog {
  position: fixed;
  display: inline-block;
  width: 80%;
  max-width: 600rpx;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  background-color: #fff;
  text-align: center;
  border-radius: 3px;
  border: 1px solid #d5d5d6;
  overflow: hidden;
}

.title {
  font-size: 18px;
  padding: 15px 15px 5px;
}

.content {
  padding: 15px 15px 5px;
  min-height: 40px;
  font-size: 16px;
  line-height: 1.3;
  word-wrap: break-word;
  word-break: break-all;
  color: #999;
  border-bottom: 1px solid #d5d5d6;
}

.cancel, .confirm {
  display: inline-block;
  width: 50%;
  box-sizing: border-box;
  font-size: 17px;
  padding: 10px 0;
}

.cancel {
  color: #353535;
}

.confirm {
  color: #3cc51f;
  border-left: 1px solid #d5d5d6;
}
2.1.3 編寫對話框的邏輯
// pages/customComponent/customComponent.js
Component({
  /**
   * 組件的屬性列表
   */
  properties: {
    // 彈窗標(biāo)題
    title: {            // 屬性名
      type: String,     // 類型(必填)粥血,目前接受的類型包括:String, Number, Boolean, Object, Array, null(表示任意類型)
      value: '標(biāo)題'     // 屬性初始值(可選),如果未指定則會根據(jù)類型選擇一個
    },
    // 彈窗內(nèi)容
    content: {
      type: String,
      value: '我就試試'
    },
    // 彈窗取消按鈕文字
    cancelText: {
      type: String,
      value: '取消'
    },
    // 彈窗確認(rèn)按鈕文字
    confirmText: {
      type: String,
      value: '確定'
    }
  },

  /**
   * 組件的初始數(shù)據(jù)
   */
  data: {
    // 彈窗顯示控制
    hideTitle: false,
    isHide: true
  },

  /**
   * 組件的方法列表
   */
  methods: {
    /*
    * 公有方法
    */

    //隱藏彈框
    hideDialog() {
      this.setData({
        isHide: !this.data.isHide
      })
    },
    //展示彈框
    showDialog() {
      this.setData({
        isHide: !this.data.isHide
      })
    },
    //隱藏標(biāo)題
    hideTitle(flag) {
      this.setData({
        hideTitle: flag
      })
    },
    /*
    * 內(nèi)部私有方法建議以下劃線開頭
    * triggerEvent 用于觸發(fā)事件
    */
    _cancelEvent() {
      //觸發(fā)取消回調(diào)
      this.triggerEvent("cancelEvent")
    },
    _confirmEvent() {
      //觸發(fā)成功回調(diào)
      this.triggerEvent("confirmEvent");
    }
  }
})

在小程序的默認(rèn)文件里面就有:組件的初始數(shù)據(jù)data亲铡、組件的屬性列表properties萝衩、組件的方法列表methods。就好像一個類趾疚,一開始有初始數(shù)據(jù)缨历,屬性、方法糙麦。

3.在其他組件中使用這個對話框

3.1 配置文件里面聲明
{
  "usingComponents": {
    "dialog": "/pages/customComponent/customComponent"
  }
}
3.2 在wxml文件中使用
<!--index.wxml-->
<dialog id='dialog' 
  title='我是標(biāo)題'
  content='我是內(nèi)容辛孵,我就想試試'
  cancelText='不試了'
  confirmText='試一試'
  bind:cancelEvent="_cancelEvent"  
  bind:confirmEvent="_confirmEvent"
></dialog>
<view catchtap='showDialog' >顯示有標(biāo)題的對話框</view>
<view catchtap='showDialogNoTitle'>顯示沒有標(biāo)題的對話框</view>
3.3 在js文件中進(jìn)行邏輯操作
//index.js
//獲取應(yīng)用實(shí)例
const app = getApp()

Page({
  data: {
  },
  onReady: function () {
    //獲得dialog組件
    this.dialog = this.selectComponent("#dialog");
  },
  //事件處理函數(shù)
  showDialog: function() {
    console.log('showDialog');
    this.dialog.hideTitle(false);
    this.dialog.showDialog();
  },
  showDialogNoTitle: function () {
    this.dialog.hideTitle(true);
    this.dialog.showDialog();
  },
  _cancelEvent: function () {
    this.dialog.hideDialog();
  },
  _confirmEvent() {
    // 在此處寫確定的邏輯代碼
    console.log('_confirmEvent');
    this.dialog.hideDialog();
  }
})

最后的運(yùn)行結(jié)果就是步驟二中呈現(xiàn)的了。

4.編寫的思路總結(jié)

4.1 編寫組件

這個可以分為:編寫組件的界面赡磅、編寫組件的邏輯魄缚。

4.2 使用組件

注意:首先要在配置文件中聲明藥使用的的組件
然后在wxml文件引入要使用的組件仆邓。
最后在邏輯代碼中進(jìn)行控制鲜滩。

5.參考地址

http://blog.csdn.net/rolan1993/article/details/78801052/
http://www.ifanr.com/minapp/966941

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市节值,隨后出現(xiàn)的幾起案子徙硅,更是在濱河造成了極大的恐慌,老刑警劉巖搞疗,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嗓蘑,死亡現(xiàn)場離奇詭異须肆,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)桩皿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進(jìn)店門豌汇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人泄隔,你說我怎么就攤上這事拒贱。” “怎么了佛嬉?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵逻澳,是天一觀的道長。 經(jīng)常有香客問我暖呕,道長斜做,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任湾揽,我火速辦了婚禮瓤逼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘库物。我一直安慰自己霸旗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布艳狐。 她就那樣靜靜地躺著定硝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪毫目。 梳的紋絲不亂的頭發(fā)上蔬啡,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天,我揣著相機(jī)與錄音镀虐,去河邊找鬼箱蟆。 笑死,一個胖子當(dāng)著我的面吹牛刮便,可吹牛的內(nèi)容都是我干的空猜。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼恨旱,長吁一口氣:“原來是場噩夢啊……” “哼辈毯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起搜贤,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤谆沃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后仪芒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體唁影,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡耕陷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了据沈。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哟沫。...
    茶點(diǎn)故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖锌介,靈堂內(nèi)的尸體忽然破棺而出嗜诀,到底是詐尸還是另有隱情,我是刑警寧澤掏湾,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布裹虫,位于F島的核電站肿嘲,受9級特大地震影響融击,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜雳窟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一尊浪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧封救,春花似錦拇涤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至惩坑,卻和暖如春掉盅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背以舒。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工趾痘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蔓钟。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓永票,卻偏偏與公主長得像,于是被迫代替她去往敵國和親滥沫。 傳聞我的和親對象是個殘疾皇子侣集,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評論 2 350

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,839評論 25 707
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 6,373評論 0 17
  • 事情的始終兰绣,不是不愿接納世分。 在所有的故事還沒有開始的時候,我們的小家庭所有的一切都顯的那么普通狭魂,那么平凡...
    己已云閱讀 190評論 0 0
  • 好好說話罚攀,有一說一党觅。可有的人不喜歡這樣說話斋泄。泱泱大國杯瞻,豈能以一語一概之。國人特別喜歡用特復(fù)雜炫掐,特?zé)X的話來說最簡單...
    小二梅閱讀 207評論 0 1
  • 桃子_d37d閱讀 167評論 3 2