小程序 --- 點擊放大功能、獲取位置信息、文字樣式省略、頁面跳轉(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"})}
})

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/250230.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/250230.shtml
英文地址,請注明出處:http://en.pswp.cn/news/250230.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Axure實現多用戶注冊驗證

*****多用戶登錄驗證***** 一、&#xff08;常規想法&#xff09;方法&#xff1a;工作量較大&#xff0c;做起來繁瑣 1、當用戶名和密碼相同時怎么區分兩者&#xff0c;使用冒號和括號來區分&#xff1a; eg. (admin:123456)(123456:demo)(zhang:san);由此得出前面是括號后面是…

前端插件網址

http://www.swiper.com.cn/轉載于:https://www.cnblogs.com/luchuangao/p/9088057.html

python --- opencv部分學習

1. OpenCV 1.1 opencv概念 OpenCV是一個基于BSD許可(開源)發行的跨平臺計算機視覺庫可以運行在Linux、Windows、Android和Mac OS操作系統上它輕量級而且高效 – 有一系列C函數和少量 C 類構成同時提供了 Python、Ruby、MATLAB等語言的接口實現了圖像處理和計算機視覺方面的很…

hive與hbase集成

環境: hadoop2.7.7 hive3.1.0 hbase2.0.2 1.jar包拷貝(之所以用這種方式,是因為這種方式最為穩妥,最開始用的軟連接的方式,總是卻少jar包)到hive的lib目錄下刪除所有hbase相關的jar rm -rf hbase-*.jar 接著從hbase的lib目錄下拷貝所有的hbase相關jar cp -a hbasehome/lib/hba…

Winform(C#)輸入完畢后,按Enter鍵觸發Button事件

如在輸入“用戶名”和“密碼”之后&#xff0c;有些人習慣按“回車鍵”來代替頁面上的“確定”按鈕&#xff0c;那么這一功能在Winform(C#)里如何實現呢&#xff1f; 觸發密碼文本框的KeyDown事件&#xff0c;代碼如下&#xff1a; [c-sharp] view plaincopy private void txtP…

Maximum Xor Secondary(單調棧好題)

Maximum Xor Secondary CodeForces - 280B Bike loves looking for the second maximum element in the sequence. The second maximum element in the sequence of distinct numbers x1,?x2,?...,?xk (k?>?1) is such maximum element xj, that the following inequa…

python --- udp的使用

1. python的模塊導入規則 參考 1.1 系統自帶模塊 系統自帶的模塊直接import導入 import time import unittest1.2 第三方下載模塊 第三方下載模塊也可以直接導入 import HTMLTestRunner import requests1.3 導入模塊的部分函數或類 from time import sleep,strftime fro…

雜項-公司:唯品會

ylbtech-雜項-公司&#xff1a;唯品會唯品會公司成立于2008年08月&#xff0c;2012年3月23日登陸美國紐約證券交易所上市&#xff08;股票代碼&#xff1a;VIPS&#xff09;。成為華南第一家在美國紐交所上市的電子商務企業。主營B2C商城唯品會名牌折扣網站是一家致力于打造中高…

python --- 使用socket創建tcp服務

1. 網絡-tcp 參考 1.1 tcp簡介 介紹 TCP協議,傳輸控制協議(英語: Transmission Control Protocol, 縮寫為TCP)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議,由IETF的RFC 793定義. TCP通信需要經過創建連接、數據傳送、終止連接三個步驟. TCP通信模型中,在通信開…

Linux基本的操作

一、為什么我們要學習Linux 相信大部分人的PC端都是用Windows系統的&#xff0c;那我們為什么要學習Linux這個操作系統呢&#xff1f;&#xff1f;&#xff1f;Windows圖形化界面做得這么好&#xff0c;日常基本使用的話&#xff0c;學習成本幾乎為零。 而Linux不一樣&#xff…

匯編語言 實驗4

實驗4 實驗內容1&#xff1a;綜合使用 loop,[bx]&#xff0c;編寫完整匯編程序&#xff0c;實現向內存 b800:07b8 開始的連續 16 個 字單元重復填充字數據 0403H&#xff1b;修改0403H為0441H&#xff0c;再次運行 步驟1&#xff1a;在記事本中編寫好temp.asm文件 步驟2&#x…

python --- 線程

1. 多任務 - 線程 參考 首先考慮一個沒有多任務的程序: import timedef sing():# 唱歌 5 秒鐘for i in range(5):print("-----菊花臺ing....-----")time.sleep(1)def dance():# 跳舞 5秒鐘for i in range(5):print("-----跳舞.....-----")time.sleep(5)d…

Python 鏈接匯總

MNIST手寫識別 轉載于:https://www.cnblogs.com/bycnboy/p/9095199.html

17種常用的JS正則表達式 非負浮點數 非負正數

<input typetext idSYS_PAGE_JumpPage nameSYS_PAGE_JumpPage size3 maxlength5 οnkeyupthis.valuethis.value.replace(/[^1-9]\D*$/,"") οndragenter"return false" οnpaste"return !clipboardData.getData(text).match(/\D/)"" sty…

python --- 使用conda配置pytorch

使用Conda配置PyTorch 1. 添加channels 下載地址 $ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ $ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ $ conda config --add channels htt…

LDAP第三天 MySQL+LDAP 安裝

https://www.easysoft.com/applications/openldap/back-sql-odbc.html OpenLDAP 使用 SQLServer 和 Oracle 數據庫。 https://www.cnblogs.com/bigbrotherer/p/7251372.html          CentOS7安裝OpenLDAPMySQLPHPLDAPadmin 1.安裝和設置數據庫 在CentOS7下&…

Myeclipse連接Mysql數據庫時報錯:Error while performing database login with the pro driver:unable...

driver template: Mysql connector/j&#xff08;下拉框進行選擇&#xff09; driver name: 任意填&#xff0c;最好是數據庫名稱&#xff0c;方便查找 connection URL: jdbc:mysql://localhost:3306/programmableweb User name: 用戶名 password: 密碼 Driver jars: 添加jar包…

Centos6.5靜態IP設置

1.創建新的虛擬機 2.打開終端&#xff0c;打開/etc/sysconfig/network-scripts/ifcfg-eth0文件 3.將BOOTPROTOstatic&#xff0c;原值為dhcp 4.添加 IPADDR192.168.43.125  #靜態IP GATEWAY192.168.43.1  #網關 NETMASK255.255.255.0  #子網掩碼 NETWORK192.168.43.0  …

matlab --- 圖像處理基礎

MATLAB圖像處理 1. 數字圖像處理 參考 數字圖像處理(Digital Image Processing)又稱為計算機圖像處理,是一種將圖像信號數字化利用計算進行處理的過程。隨著計算機科學、電子學和光學的發展,數字圖像處理已經廣泛的應用到諸多領域之中。本小節主要介紹圖像的概念、分類和數字…

java 注解默認值

package com.zejian.annotationdemo;import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/** * Created by wuzejian on 2017/5/19. * 數據類型使用Demo */T…