小程序開發知識點及坑點總結


知識點

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/> 並不是一個組件,它僅僅是一個包裝元素,不會在頁面中做任何渲染,只接受控制屬性。

因為 wx:if 是一個控制屬性,需要將它添加到一個標簽上。如果要一次性判斷多個組件標簽,可以使用一個 <block/> 標簽將多個組件包裝起來,並在上邊使用 wx:if 控制屬性。這樣可以減少標簽的使用。
<block wx:if="{{true}}">
             <view> view1 </view>
            <view> view2 </view>
        </block>

 9.輸入框Input坑點

1)鍵盤彈起,頁面自動上推。。但是目前,沒有用戶到達此版本,

2) 輸入框輸入號碼時,按照344格式化,直接return字符串並不生效。用setData設置則生效,但ios下可以明顯看到有間隔,安卓下實際上有間隔,但是必須輸入框失焦才會顯示出來。

3) 不能在bindinput事件中setData,否則ios下有一個嚴重的bug。具體表現為,輸入事,光標移至中間輸入或刪除,光標會自動跳到最后。

10.<block/> 並不是一個組件,它僅僅是一個包裝元素,不會在頁面中做任何渲染,只接受控制屬性。
因為 wx:if 是一個控制屬性,需要將它添加到一個標簽上。如果要一次性判斷多個組件標簽,可以使用一個 <block/> 標簽將多個組件包裝起來,並在上邊使用 wx:if 控制屬性。
        <block wx:if="{{true}}">
             <view> view1 </view>
            <view> view2 </view>
        </block>
11.小程序中picker-view中bindchange方法會在滑動結束后點確定才觸發,如果我隨手一滑,還沒等他停下就就按確定按鈕或者跳轉頁面,那么bindchange沒觸發就不能獲取到滑動后改變的值
12.開發者工具斷點有bug,對象為undefined,對象里面的值卻是有東西的。

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM