<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了微信小程式自定義Dialog彈框的具體程式碼,供大家參考,具體內容如下
1、在根目錄下自定義一個components資料夾,用來存放自定義的元件。
2、再針對每一個元件建立一個資料夾,用來存放這個元件相關的檔案。
3、在指定元件的資料夾中右鍵->新建Component建立元件。這樣建立的目的是在json檔案中新增"component": true,將其宣告為一個元件。
下面開始例子:
1、元件頁面 index.wxml
<!-- 確認框 --> <!-- 遮罩層 --> <view class="dialog-overlay-view" style="width: {{ windowWidth }}px; height: {{ windowHeight }}px; display: {{ show ? 'block' : 'none' }};"></view> <view class="col-center" style="width: {{ windowWidth }}px; height: {{ windowHeight }}px; display: {{ show ? 'flex' : 'none' }};"> <view> <view class="dialog-content-view"> <view> <text class="dialog-content-text">{{ message }}</text> </view> <view class="operation-view"> <view class="operation-col-view" bindtouchend="onCancel"> <text class="cancel-text">{{ cancelButtonText }}</text> </view> <view class="operation-col-view" bindtouchend="onConfirm"> <text class="confirm-text">{{ confirmButtonText }}</text> </view> </view> </view> </view> </view>
2、元件樣式 index.wxss
/* components/dialog/index.wxss */ .dialog-overlay-view { background-color: #000000; opacity: 0.5; position: fixed; z-index: 10; } .col-center { position: fixed; z-index: 11; display: flex; flex-direction: column; justify-content: center; align-items: center; } .dialog-content-view { width: 210px; background: #FFFFFF; border-radius: 8px; display: flex; flex-direction: column; justify-content: center; padding: 40px 40px 20px 40px; } .dialog-content-text { font-size: 14px; font-family: PingFangSC-Regular, PingFang SC; font-weight: 400; color: #454545; line-height: 20px; } .operation-view { display: flex; flex-direction: row; justify-content: space-between; margin-top: 30px; } .operation-col-view { height: 36px; width: 75px; display: flex; flex-direction: column; justify-content: center; align-items: center; } .cancel-text { height: 14px; font-size: 14px; font-family: PingFangSC-Regular, PingFang SC; font-weight: 400; color: #999999; line-height: 14px; } .confirm-text { height: 14px; font-size: 14px; font-family: PingFangSC-Regular, PingFang SC; font-weight: 400; color: #E63719; line-height: 14px; }
3、元件json設定 index.json
{ "component": true, "usingComponents": {} }
4、元件頁面的js index.js
// components/dialog/index.js Component({ options: { /** styleIsolation 選項從基礎庫版本 2.6.5 開始支援。它支援以下取值: isolated 表示啟用樣式隔離,在自定義元件內外,使用 class 指定的樣式將不會相互影響(一般情況下的預設值); apply-shared 表示頁面 wxss 樣式將影響到自定義元件,但自定義元件 wxss 中指定的樣式不會影響頁面; shared 表示頁面 wxss 樣式將影響到自定義元件,自定義元件 wxss 中指定的樣式也會影響頁面和其他設定了 apply-shared 或 shared 的自定義元件。(這個選項在外掛中不可用。) */ styleIsolation: 'isolated' }, /** * 元件的屬性列表 */ properties: { cancelButtonText: { type: String, value: '取消' }, confirmButtonText: { type: String, value: '確定' }, message: { type: String, value: '' }, show: { type: Boolean, value: false, }, confirmCallback: null, cancelCallback: null, }, /** * 元件的初始資料 */ data: { windowWidth: 0, windowHeight: 0, }, /** * 生命週期函數 */ ready: function() { var _this = this; wx.getSystemInfo({ success: function(res) { _this.setData({ windowWidth: res.windowWidth, windowHeight: res.windowHeight, }); } }); }, /** * 元件的方法列表 */ methods: { onConfirm() { if (this.properties.confirmCallback) { this.properties.confirmCallback(); } this.setData({ show: false }); }, onCancel() { if (this.properties.cancelCallback) { this.properties.cancelCallback(); } this.setData({ show: false }); }, } });
5、元件js dialog.js
const defaultOptions = { show: false, message: '', selector: '#cus-dialog', confirmButtonText: '確認', cancelButtonText: '取消', confirmCallback: null, cancelCallback: null, }; let currentOptions = Object.assign({}, defaultOptions); function getContext() { const pages = getCurrentPages(); return pages[pages.length - 1]; } const Dialog = (options) => { options = Object.assign(Object.assign({}, currentOptions), options); const context = options.context || getContext(); const dialog = context.selectComponent(options.selector); delete options.context; delete options.selector; if (dialog) { dialog.setData(options); wx.nextTick(() => { dialog.setData({ show: true }); }); } else { console.warn('未找到 cus-dialog 節點,請確認 selector 及 context 是否正確'); } }; Dialog.confirm = (options) => Dialog(Object.assign({ showCancelButton: true }, options)); export default Dialog;
6、使用方法
需要用到dialog的頁面引入dialog元件:
{ "usingComponents": { "cus-dialog": "../../components/dialog/index" } }
頁面加入dialog節點:
<cus-dialog id="cus-dialog"/>
在頁面的js中彈出dialog視窗:
//引入dialog元件 import Dialog from '../../components/dialog/dialog'; //在程式碼中呼叫 Dialog.confirm({ message: '彈窗內容', selector: '#cus-dialog', confirmCallback: function() { console.log('確認啦'); } });
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45