微信小程序開發問答《七十》i八nput标簽中文字被遮蓋 & 登陸态維護 ... ...
發表時(shí)間:2022-9-14
發布人(rén):融晨科技
浏覽次數:68
wxml代碼
'text' placeholder='請輸入驗證碼' class='test'>input>
wxss代碼
.test{
margin-top:100rpx;
width:50%;
}
input {
display:block;
height:1.4rem;
text-overflow:clip;
overflow:hidden;
white-space:nowrap;
font-family:UICTFontTextStyleBody;
min-height:1.4rem;
}
疑惑:明明還有空間的(de),爲(wéi / wèi)什麽文字會顯示不(bù)全
答:不(bù)知道(dào)是(shì)不(bù)是(shì)bug,微信小程序裏input寬度縮小,input可輸入文字的(de)區域會縮小的(de)更多,比如說(shuō)你把input寬度設置爲(wéi / wèi)90%,則input文字輸入可顯示的(de)區域可能隻有80%左右。目前的(de)解決方法:在(zài)input輸入框外面套一層view,通過改變view的(de)寬度控制input的(de)長度,這(zhè)樣不(bù)會影響文字顯示。
遇到(dào)這(zhè)種情況應該要(yào / yāo)打開你的(de)調試工具,看看input上(shàng)有沒有還添加了(le/liǎo)其他(tā)樣式,例如padding。
2、微信小程序登陸态維護問題
這(zhè)是(shì)官方給處的(de)方法
假如用戶登陸了(le/liǎo),然後删除了(le/liǎo)storage也(yě)就(jiù)是(shì)緩存的(de)内容
那麽3rd session也(yě)沒了(le/liǎo)
以(yǐ)後請求的(de)話 獲取不(bù)到(dào)這(zhè)個(gè)3rd session怎麽辦
還是(shì)說(shuō),隻要(yào / yāo)删除緩存,那麽小程序會給出(chū)登陸失敗的(de)檢測,讓我們重走一遍流程?
答:官方原話1:“對于(yú)開發者自己生成的(de) session,應該保證其安全性且不(bù)應該設置較長的(de)過期時(shí)間。”
官方原話2:“通過 wx.checkSession 可以(yǐ)檢測用戶登錄态是(shì)否失效。并決定是(shì)否調用 wx.login 重新獲取登錄态”。删除緩存後用wx.checkSession檢測登錄狀态(失效),并重新發起登錄流程。
就(jiù)像 iOS 的(de)列表一樣,上(shàng)滑的(de)時(shí)候每個(gè) section 的(de) header 固定,直到(dào)滾動到(dào)下一個(gè) section 的(de)時(shí)候下一個(gè) header 把上(shàng)一個(gè) header「頂走」。
類似 https://codepen.io/chrissp26/...
鑒于(yú)小程序沒有 DOM 相關 API,不(bù)知道(dào)如何實現這(zhè)種效果。
Update: 我看到(dào)京東小程序的(de)首頁有類似效果,所以(yǐ)理論上(shàng)是(shì)可以(yǐ)做到(dào)的(de)?另,非回答類的(de)回複請直接在(zài)問題下評論,不(bù)要(yào / yāo)開回答。
答:css3新增的(de)一個(gè)position屬性可以(yǐ)直接實現sticky的(de)效果,在(zài)你的(de)header中加上(shàng)
{
position: sticky;
top: 0;
}
就(jiù)可以(yǐ)了(le/liǎo)。
4、關于(yú)微信小程序的(de)問題
我有一個(gè)是(shì)使用率很高的(de)方法,比如
Page({
data:{
a: "hello life",
b: function(){
this.setData({
a: "hello world"
});
}
}
});
但是(shì)我現在(zài)想把他(tā)公用出(chū)去,該怎麽辦?
1.我首先用到(dào)的(de)是(shì)文檔中介紹的(de)模塊化,把公用的(de)内容另存一個(gè)js,但是(shì)發現require過來(lái)的(de)common.js裏的(de)内容是(shì)不(bù)能直接放到(dào)wxml裏用到(dào),比如
var common = require("common.js");
/*在(zài)wxml中*/
<view>{{common.a}}view> //這(zhè)樣是(shì)無效的(de),必須在(zài)Page裏再定義一變量,并賦值給這(zhè)個(gè)變量才行,但是(shì)這(zhè)麽做就(jiù)顯得沒啥公用可言了(le/liǎo)。
2.其次,我發現還有個(gè)單獨定義成wxs文件,但是(shì)發現想修改自己的(de)變量是(shì)修改不(bù)了(le/liǎo)的(de)。例如
/*wxs中*/
module.exports = {
a: "hello life",
b: function(){
a = "hello world"; //這(zhè)裏這(zhè)麽做也(yě)是(shì)無法完成修改
}
}
所以(yǐ)想問問,這(zhè)種使用率高,然後自身變量和(hé / huò)函數會相互訪問并操作,同時(shí)肯定也(yě)得保證數據相互之(zhī)間的(de)綁定。該如何寫呢?
答:你這(zhè)個(gè)問題叫模塊化開發,具體在(zài)小程序中可以(yǐ)參考官方文檔:https://mp.weixin.qq.com/debu...
根據他(tā)們的(de)文檔我們可以(yǐ)知道(dào),對于(yú)要(yào / yāo)複用的(de)JS可以(yǐ)采取2種方式進行開發:
方式1:将公共方法定義在(zài)App()中,再通過全局函數 getApp() 可以(yǐ)獲取全局的(de)應用實例及其内部方法。
方式2:單獨定義一個(gè)JS文件,通過require的(de)方法引入JS。
以(yǐ)上(shàng)總體介紹了(le/liǎo)小程序的(de)模塊化開發,接下來(lái)針對你的(de)問題回答:
1、你定義的(de)common.js文件不(bù)能在(zài)wxml文件中引入,應該在(zài)wxml文件對應的(de)js文件中引入common.js。建議不(bù)要(yào / yāo)在(zài)wxml中直接操作JS,而(ér)應該通過對應的(de)JS中的(de)data改變頁面的(de)狀态,wxml隻負責頁面的(de)呈現。補充:js的(de)引入用require,而(ér)wxml中引入其他(tā)wxml要(yào / yāo)用import。
2、wxs(WeiXin Script)文件是(shì)小程序最近才引進的(de)一套機制,它允許wxml和(hé / huò)wxs混在(zài)一個(gè)頁面中開發,估計是(shì)跟随現在(zài)組件化開發的(de)大(dà)潮流吧。wxs 與 javascript 是(shì)不(bù)同的(de)語言,有自己的(de)語法,并不(bù)和(hé / huò) javascript 一緻。建議你先不(bù)要(yào / yāo)用wxs這(zhè)東西,它是(shì)騰訊自己的(de)一套類似JS的(de)語法。