知識點
1.小程序里面,點擊頁面頂部的返回按鈕的時候,返回的那個頁面不會刷新。頁面直接跳轉返回都可以傳參跳轉。需要做處理的時候,在onshow的時候接收參數並處理即可。
2. 頁面有彈層時,阻止下面的頁面滾動。
這個只能是用“曲線救國”來形容了。因為不能直接操作dom。就要通過class控制。通過設置外層的dom為fixed,寬度高度為100%;
.tripFix_root{ top:0px; left: 0px; width: 100%; height: 100%; overflow: hidden; position: fixed; z-index: 0; }
<view class="wx_wrap recharge {{fixflag?'tripFix_root':''}}"></view>
如果,你是index頁面中用了組件,然后組件里有彈窗,這個時候要阻止的是index里面的最外層dom。這就要組件事件(https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/events.html)來處理了。
3.小程序樣式單位rpx(responsive pixel): 可以根據屏幕寬度進行自適應。規定屏幕寬為750rpx。如在 iPhone6 上,屏幕寬度為375px,共有750個物理像素,則750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素。有時候會出現在大屏手機上顯示過小的情況。
4. 小程序中的數據改變需要調用setData去設置。如果想改變數組中的某一項的某個值,可以這樣設置:
Page({ data: { array: [{text: 'init data'}], }, changeItemInArray: function() { this.setData({ 'array[0].text':'changed data' }) } })
動態設置某個值的時候可以這樣設置
var param = {}; var string = "array["+index+"].text; param[string] = 'changed data'; that.setData(param);
5.wx:if的使用,跟vue中的v-if原理一樣, 如果不符合渲染條件,它不會渲染相應部分; 小程序中有元素顯示頻繁切換的需求,例如選中與不選中這樣。建議使用 display: hidden,通過class控制。這樣能夠提高用戶體驗。
6. 名稱以 bind 開頭的事件不阻止冒泡,名稱以 catch 開頭的事件冒泡是阻止的。如 bindTap 和 catchTab。
7.在 WXML 中,可以使用 dataset 定義 data 中的數據,會通過事件傳遞。它的事件以 data- 開頭,多個單詞以 - 鏈接,如 data-a-b。也可以整個對象一起傳,如data-item="{{item}}",需要注意的是,使用這種方式定義的變量不能有大寫。它會自動轉成駝峰命名,調取的時候去駝峰命名的名字。
8.block標簽,<block/> 並不是一個組件,它僅僅是一個包裝元素,不會在頁面中做任何渲染,只接受控制屬性。
<block wx:if="{{true}}">
<view> view1 </view>
<view> view2 </view>
</block>
9.輸入框Input坑點
1)鍵盤彈起,頁面自動上推。。但是目前,沒有用戶到達此版本,
2) 輸入框輸入號碼時,按照344格式化,直接return字符串並不生效。用setData設置則生效,但ios下可以明顯看到有間隔,安卓下實際上有間隔,但是必須輸入框失焦才會顯示出來。
3) 不能在bindinput事件中setData,否則ios下有一個嚴重的bug。具體表現為,輸入事,光標移至中間輸入或刪除,光標會自動跳到最后。

