日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

小程序 --- 点击放大功能、获取位置信息、文字样式省略、页面跳转(navigateTo)

發布時間:2023/12/10 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小程序 --- 点击放大功能、获取位置信息、文字样式省略、页面跳转(navigateTo) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 點擊放大功能的實現

需求: 點擊輪播圖中的圖片會實現放大預覽的功能。首先有輪播圖的樣式如下

<!-- pages/goods_detail/index.wxml --> <!-- 輪播圖 --> <view class="detail_swiper"><swiperautoplaycircularindicator-dots><swiper-itemwx:for="{{goodsObj.pics}}"wx:key="pics_id"bindtap="handlePreviewImage"data-url="{{item.pics_mid}}"><image mode="widthFix" src="{{item.pics_mid}}"></image></swiper-item></swiper> </view>

上面給輪播圖綁定了一個點擊事件 handlePreviewImage,下面在JS文件中監聽這個事件的點擊

// pages/goods_detail/index.js Page({// 點擊輪播圖 放大預覽handlePreviewImage(e) {const { url: current } = e.currentTarget.datasetconst urls = this.GoodsInfo.pics.map(v => v.pics_mid)wx.previewImage({current,urls: urls})} })

使用了微信提供的previreImage方法,current是點擊進去的圖片url(String類型),urls是預覽的圖片組的url數組(數組元素,里面是String類型)

2. 底部工具欄的封裝

效果如下

2.1 基礎知識補充 - navigator

導航組件: 類似超鏈接標簽

屬性名類型默認值說明
targetStringself在哪個目標上發生跳轉,漠然當前小程序,可選值self/miniProgram
urlString當前小程序內的跳轉鏈接
opentypeStringnavigate跳轉方式

open-type有效值

值說明
navigate保留當前頁面,跳轉到頁面內的某個頁面,但不能跳到tabbar頁面
redirect關閉當前頁面,跳轉到應用內的某個頁面,但是不允許跳轉到tabbar頁面
switchTab跳轉到tabBar頁面,并關閉其他所有非tabBar頁面
reLaunch關閉所有頁面,打開到應用內的某個頁面
navigateBack關閉當前頁面,返回上一頁或多級頁面,可通過getCurrentPages()獲取當前的頁面棧,決定需要返回
.exit退出小程序,target="miniProgram"時生效

2.2 頁面骨架

<!-- pages/goods_detail/index.html --> <!-- 底部工具欄 --> <view class="btm-bool"><view class="bool_item"><view class="iconfont icon-kefu"></view><view>客服</view><button open-type="contact"></button></view><view class="bool_item"><view class="iconfont icon-weibiaoti-_huabenfuben"></view><view>分享</view><button open-type="share"></button></view><navigatoropen-type="switchTab"url="/pages/cart/index"class="tool_item"><view class="iconfont icon-che"></view><view>購物車</view></navigator><view class="tool_item btn_cart">加入購物車</view><view class="tool_item btn_buy">立即購買</view> </view>

2.3 樣式

/* 底部工具欄 */ .footer_tool{position: fixed;left: 0;bootom: 0;width: 100%;height: 90rpx;background-color: #fff;display: flex;border-top: 1rpx solid #ccc; } .footer_tool .all_chk_wrap {flex: 2;display: flex;justify-content: center;align-items: center; }.footer_tool .total_price_wrap {flex: 5;text-align: right;padding-right: 15rpx; }.footer_tool .total_price_wrap .total_price .total_price_text {color: var(--themeColor);font-size: 34rpx;font-weight: 600; } .footer_tool .order_pay_wrap {flex: 3;display: flex;justify-content: center;align-items: center;background-color: var(--themeColor);color: white;font-weight: 600;font-size: 32rpx; }

以上使用了flex布局,值得說明的是: 使用justify-content: center + align-items: center可以很方便的實現盒子內內容的垂直居中對齊

3. 獲取收貨地址

3.1展示


首先有一個按鈕,點擊之后會獲取權限

若以前拒絕過.則會條轉到獲取權限的界面

3.2 實現

需求: 有時候某些需求需要用戶授權, 而這些權限用戶之前可能拒絕過.這就需要用到微信提供的API(openSetting),來進行重新授權

栗子: 在購物車中,當用戶在獲取收獲地址時(chooseAddress), 有可能先拒絕過獲取地址的提示.獲取信息可以使用(getSetting)API獲取.未授權時調用openSetting,授權了調用chooseAddress, 具體代碼如下:

<!-- pages/cart/index.wxml --> <view class="receive_address_row"><view class="address_btn"><button bindtap="handleChooseAddress" plain type="primary">獲取收貨地址</button></view> </view>

上面實現了收貨地址的一個按鈕,下面通過JS和微信提供的API來實現收貨地址的邏輯:

  • 首先獲取狀態,判斷是否運行訪問地址
    • 否: 調用獲取權限的API
    • 是: 不做處理
  • 接下來通過獲取地址的api來獲取用戶的地址
  • 成功后將用戶的地址放入到微信提供的緩存中,鍵設置為: address

在實現以上邏輯之前,需要將微信提供的API封裝成Promise形式,避免回調地獄

// utils/asyncWx.js// 封裝 獲取用戶授權信息 export const getSetting = () =>{return new Promise((resolve, reject)=>{wx.getSetting({success: res=>{resolve(res)},fail: err=>{reject(err)}})}) }// 封裝 獲取地址API export const chooseAddress = () =>{return new Promise((resolve, reject)=>{wx.chooseAddress({succcess: res=>{resolve(res)},fail: err =>{reject(err)}})}) }// 封裝 重新授權API export const openSetting = () =>{return new Promise((resolve, reject) =>{wx.openSetting({success: res=>{resolve(res)},fail: err =>{reject(err)}})}) }

之后利用上面封裝的接口,實現獲取收貨地址的邏輯

// pages/cart/index.jsimport { getSetting, chooseAddress, openSetting } from "../../utils/asyncWx.js";Page({// 點擊 獲取收貨地址async handleChooseAddress() {try{// 獲取權限狀態const res1 = await getSetting();const scopeAddress = res1.authSetting["scope.address"];// 判斷是否授權if(scopeAddress == false){// 未授權, 重新獲取授權await openSetting();}// 到這里是獲取了授權, 直接獲取用戶的地址信息const address = await chooseAddress();// 將用戶的地址信息緩存到微信提供的緩存中.wx.setStorageSync("address", address);} catch (err){console.log(err);}} })

4.文字省略的樣式

4.1 展示

需求: 在項目中,有的文字出現長度,超過了給定長度,這個時候,往往需要將超出部分隱藏,用省略號代替

以上第二行超出了長度.用省略號表示

4.2栗子

栗子: 下面給出一個標題部分,第二行超出隱藏用省略號代替的栗子

.goods_name{display: -webkit-box;overflow: hidden;-webkit-box-orient: vertival;-webkit-line-clamp: 2; }

5. 購物車頁面跳轉

需求: 購物車完成結算驗證之后會跳轉到支付頁面。關鍵API在navigateTo.

下面附上購物車的計算部分代碼

<!--pages/cart/index.wxml--> <!-- 結算 --> <view class="order_pay_wrap" bindtap="handlPay">結算{{totalNum}} </view> // pages/cart/index.js Page({async handlPay(){const {address, totalNum } = this.data;// 判斷有沒有選擇收貨地址if(!address.userName) {await showToast({ title: "您還沒有選中收貨地址" })return;}// 判斷商品數量if(totalNum ==0 ){await showToast({ title: "您還沒有選購商品" });return;}// 跳轉到支付頁面wx.navigateTo({url: "/pages/pay/index"})} })

總結

以上是生活随笔為你收集整理的小程序 --- 点击放大功能、获取位置信息、文字样式省略、页面跳转(navigateTo)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。