自定義元件實現底部彈出選單
1.效果圖
點選客服按鈕,從底部彈出選單欄
點選微信線上客服,可以喚起微信客服
2.為什麼要自己寫選單欄?
微信原生的選單欄不支援直接喚起微信客服唄,難受==
不想說話了,貼程式碼
3.程式碼段
- 定義元件
<!--components/customerService/customerService.wxml-->
<view class="customer_service_wrap" wx:if="{{isShowCustomerService}}">
<view class="overlay" animation ="{{fadeInOrOut}}" bindtap="cancleCallService"></view>
<view class="menu_list" animation="{{slideInOrOut}}">
<view class="menu_top">
<button class="menu_item"
open-type="contact"
send-message-title="{{sku_info.name}}"
<!--這幾項是為了使用者開啟客服會話時,快捷傳送商品圖片和連結的,跟淘寶一個套路-->
send-message-path="{{service_url}}"
send-message-img="{{sku_info.pictures_arr[0]}}"
show-message-card="true">微信線上客服</button>
<view class="line"> </view>
<button class="menu_item" bindtap="callService">客服電話: {{service_phone}}</button>
</view>
<view class="menu_item cancle" bindtap="cancleCallService">取消</view>
</view>
</view>
// components/customerService/customerService.js
import utils from '../../utils/util'
const appInstance = getApp()
Component({
/**
* 元件的屬性列表
*/
properties: {
sku_info:{
type: Object,
value: {}
},
isShowCustomerService: {
type: Boolean,
value: false,
observer: 'serviceHandle'
}
},
/**
* 元件的初始資料
*/
data: {
service_url: '',
service_phone: '4006655566',
slideInOrOut: {},
fadeInOrOut: {},
translateLeft: null,
translateTop: null
},
created(){
var fadeInOrOutAnimation = wx.createAnimation({
duration: 700,
timingFunction: 'ease',
})
this.fadeInOrOutAnimation = fadeInOrOutAnimation
var slideInOrOutAnimation = wx.createAnimation({
duration: 700,
timingFunction: 'ease',
transformOrigin: '50% 50% 0'
})
this.slideInOrOutAnimation = slideInOrOutAnimation
try {
var res = wx.getSystemInfoSync()
this.setData({
screenWidth: res.screenWidth,
screenHeight: res.screenHeight,
translateLeft: 710/2/750*res.screenWidth,
translateTop: 340/750*res.screenWidth
})
} catch (e) {
// Do something when catch error
}
},
onShow(){
this.setData({
// 獲取微信客服用分享連結
service_url: utils.getCurrentPageUrl(),
service_phone: this.data.service_phone
})
},
/**
* 元件的方法列表
*/
methods: {
serviceHandle: function(newVal, oldVal){
if(newVal === true){
this.fadeInOrOutAnimation.opacity(0.5).step();
this.slideInOrOutAnimation.translate(-this.data.translateLeft, -this.data.translateTop).step();
setTimeout(function () {
this.setData({
fadeInOrOut: this.fadeInOrOutAnimation.export(),
slideInOrOut: this.slideInOrOutAnimation.export(),
})
}.bind(this),100)
}
},
callService: function () {
var that = this;
wx.makePhoneCall({
phoneNumber: that.data.service_phone
})
},
cancleCallService: function () {
this.fadeInOrOutAnimation.opacity(0).step();
this.slideInOrOutAnimation.translate(-this.data.translateLeft, this.data.translateTop).step();
this.setData({
fadeInOrOut: this.fadeInOrOutAnimation.export(),
slideInOrOut: this.slideInOrOutAnimation.export(),
})
setTimeout(function () {
this.setData({
isShowCustomerService: false
})
}.bind(this),300)
}
}
})
// components/customerService/customerService.js
{
"component": true
}
2.使用客服元件
<!-- index.html -->
<customer-service wx:if="{{canIUseDataProxy}}" sku_info="{{sku_info}}" isShowCustomerService="{{isShowCustomerService}}"></customer-service>
//index.js
{
"usingComponents": {
"customer-service": "/components/customerService/customerService"
}
}
4. 相容性
用了自定義元件的observer屬性,文件說從1.6.3開始支援 , 親測1.9.9 向下有幾個基礎庫都不相容,做了查詢當前版本庫,低的話降低處理
5.用自定義元件還是模版?
這取決於你只是想複用一段UI樣式,還是想實現一個可複用的小功能?你懂得吧
相關推薦
自定義元件實現底部彈出選單
1.效果圖 點選客服按鈕,從底部彈出選單欄 點選微信線上客服,可以喚起微信客服 2.為什麼要自己寫選單欄? 微信原生的選單欄不支援直接喚起微信客服唄,難受== 不想說話了,貼程式碼 3.程式碼段 定義元件
Android DialogFragment實現底部彈出選單效果
底部彈出式選單, 可以使用PopupWindow來做,也可以用自定義View來做。當然這裡採用DialogFragment來做。 DialogFragment是3.0之後引入的,使用DialogFragment,我們不用管理其生命週期,並且可以作為元件重用。比
Android開發-實現底部彈出選單欄
效果圖: activity_main: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/and
使用CoordinatorLayout實現底部彈出選單
第一步:新增依賴: compile "com.android.support:design:${project.properties.get("support")}" 第二步:佈局引用: &
[Android] 仿IOS實現自定義Dialog,底部彈窗和中間彈窗工具
用過Android的預設對話方塊的都懂,不管是哪個版本的對話方塊,都醜到爆!就算是Google推崇的Material Design風格的彈窗一樣不好看,基本每款APP都不會去使用預設的對話方塊樣式,他們都有自己的風格,怎樣去改變預設的對話方塊樣式呢?只能自定義了,將系統對話方
Vue自定義元件實現按鈕許可權功能
在這之前請看我上一篇部落格https://blog.csdn.net/qq_41594146/article/details/83381964,這裡有思路和資料庫設定,之前做的是沒有元件化,也就是單純的v-for迴圈直接顯示,剛剛寫了按鈕許可權的元件,現在貼上程式碼\ var myBu
vue自定義元件實現v-model雙向繫結
vue中父子元件通訊,都是單項的,直接在子元件中修改prop傳的值vue也會給出一個警告,接下來就用一個小列子一步一步實現了vue自定義的元件實現v-model雙向繫結,父元件值變了子元件也會跟著變,子元件中傳過來的值變了,父元件值也會跟著變化。如有錯誤的地方歡迎評論指出 父級元件
使用vue自定義元件實現樹形列表
最近公司做新專案用的是vue,有一個功能做一個樹形列表由於之前一直用的是jquery操作dom,剛接觸vue走了不少彎路,特意寫部落格記錄一下 一、js自定義一個元件 <script type="text/template" id
自定義小程式popupwindow彈出框
在上方彈出 wxml <view class="zan-dialog {{ showDialog ? 'zan-dialog--show' : '' }}"> <view class="zan-dialog__mask" bindtap=
高仿element-ui自定義上角標彈出框
最近要寫個彈框,發現element-ui彈框樣式還可以,就copy下來改吧改吧。 html程式碼 <!--彈框--> <div class="el-dropdown-menu el-popper" :style="'position: absolute; top:
微信小程式自定義元件實現地址單級連續選擇(拼多多APP地址選擇樣式)
最終效果在 首先在page資料夾下建立components資料夾,在components資料夾下建立region-picker的資料夾,然後在region-picker資料夾下建立Component名稱為region-picker。 region-picke
自定義PopupWindow,點選彈出PopupWindow,背景變暗,仿點選彈出分享
注:參照大神程式碼寫的 自定義程式碼 package com.duanlian.popupwindowdemo; import android.app.Activity; import android.content.Context; import android.g
Angular2中自定義元件實現雙向繫結
在Angular2中的資料流動是單向的,我們常見的雙向繫結的例子如下:<input [(ngModel)]="value"/>等價於<input [ngModel]="value" (ngModelChange)="valueChange($even
android自定義dialog,軟體鍵盤彈出擋住輸入區域解決
在做新浪oauth2.0認證時,裡面有一個自定義dialog的類。dialog中載入的是一一個webview。當鍵盤彈起的時候就會彈住輸入區域。 解決辦法: 在dialog的oncarete方法中加 getWindow().setSoftInputMode(WindowManager.LayoutPara
android 底部彈出選單
好久沒寫筆記了,好不容易今天有空,就分享一下android底部彈出選單的效果。 主要用popupwindow來實現。 先看一下效果圖: 點選按鈕就可以建立一個底部選單了。 現在來看程式碼: 首先在res目錄下新建anim目錄,在anim目錄下建兩個
使用微信小程式自定義元件實現的tabs選項卡功能
一個自定義元件由 json wxml wxss js 4個檔案組成。要編寫一個自定義元件,首先需要在 json 檔案中進行自定義元件宣告(將 component 欄位設為 true 可這一組檔案設為自定義元件) components/navigator/i
微信中MMAlert(半透明底部彈出選單)的使用介紹
如果大家時常用過微信或者用過iphone,就會發現有種從底部彈出的半透明選單,這種選單風格優美並且使用者體驗良好,先看一下效果。 MMAlert來自微信開放平臺的sdk示例,其示例的程式碼有點亂,我做了刪減和整理,只保留了MMAlert這個類的一部分功能,即只保留了
Android安卓自定義由底部彈出對話方塊
努力不一定立刻會有好的結果,但一定是朝著好的方向 ——李尚龍 《你所謂的穩定,不過是在浪費生命》
微信小程式之 動畫 —— 自定義底部彈出層
wxml: <view class='buy' bindtap='showBuyModal'>立即購買</view> <!-- 點選立即購買 彈出購買遮罩層 --> <view class="cover_screen" bindtap="hideBuyModal"
微信小程序之 動畫 —— 自定義底部彈出層
modals num view radi let art time cit 點擊 wxml: <view class='buy' bindtap='showBuyModal'>立即購買</view> <!--