1.跳轉(zhuǎn)頁面的方式
- 跳轉(zhuǎn)目標頁關(guān)閉當前頁 -
wx.redirectTo(OBJECT) - 跳轉(zhuǎn)目標頁保留當前頁 -
wx.navigateTo(OBJECT) - 跳轉(zhuǎn)目標頁關(guān)閉所有頁 -
wx.reLaunch(OBJECT) - 跳轉(zhuǎn)tabBar頁,關(guān)閉其他所有非tabBar頁 -
wx.switchTab(OBJECT) - 關(guān)閉當前頁 ,返回上級或多級頁
var pages = getCurrentPages();
var prevPage = pages[pages.length - 2]; //上一個頁面
wx.navigateBack({
delta: prevPage
})
// 注意:調(diào)用 navigateTo 跳轉(zhuǎn)時,調(diào)用該方法的頁面會被加入堆棧,而 redirectTo 方法則不會。見下方示例代碼
// 此處是A頁面
wx.navigateTo({
url: 'B'
})
// 此處是B頁面
wx.navigateTo({
url: 'C'
})
// 在C頁面內(nèi) navigateBack,將返回A頁面
wx.navigateBack({
delta: 2
})
wx.navigateTo 和 wx.redirectTo 不允許跳轉(zhuǎn)到 tabbar 頁面,只能用 wx.switchTab 跳轉(zhuǎn)到 tabbar 頁面
- 頁面跳轉(zhuǎn)+帶參
A.普通參數(shù)
<!--傳參頁面-->
wx.navigateTo({
url: '../order/order?flag='1'&title='2'
})
<!--目標頁面.js-->
onLoad: function (options) {
this.setData({
flag: options.flag,
title: options.title,
})
}
B.數(shù)組 字典 對象參數(shù) 通過 JSON.stringify()格式化在傳參
<!--傳參頁面-->
var moduleInfo={
"id": 2,
"moduleName": "培訓課程",
"moduleTable": "train_title_list_detail",
"iconPath": "/xcx/icon/train_curriculum.png"
};
wx.navigateTo({
url: '../list/list?moduleInfo=' + JSON.stringify(moduleInfo)
})
<!--目標頁面.js-->
onLoad: function (options) {
this.setData({
moduleInfo: JSON.parse(options.moduleInfo),
})
},
2.Flex布局 【從左到右為交叉軸,從上到下為主軸】
- flex-direction這個屬性是用來規(guī)定flex項目在軸方向上面排列的順序。
屬性:
flex-direction: row | row-reverse | column | column-reverse;
row
如果規(guī)定的方向是 ltr(left to right)項目一次從左往右排列,
如果規(guī)定的方向是 rtl(right to left)項目一次從右往左排列,
row是默認值。
row-reverse
如果規(guī)定的方向是 ltr(left to right)項目一次從右往左排列,
如果規(guī)定的方向是 rtl(right to left)項目一次從左往右排列,
row 和 row-reverse 是相反的。
column 跟row是類似的,只不過是從上到下的方向排列的。
column-reverse 跟row-reverse 是類似的,只不過是從下到上的方向排列的。
- flex-wrap是決定項目是否多行顯示的屬性,項目默認情況下是在一行下顯示的。
屬性:
flex-wrap: nowrap | wrap | wrap-reverse;
nowrap 指的是在一行顯示不換行;
wrap 指的是多行顯示;
wrap-reverse 指的是多行顯示,但是跟規(guī)定排列方向相反;
flex-flow是 flex-direction 和 flex-wrap 的縮寫
flex-flow: <‘flex-direction’> || <‘flex-wrap’>
上面css即:
.container {
display: flex; /*or inline-flex*/
flex-flow: row wrap;;
}
- justify-content用于在主軸上對齊伸縮的項目屬性
屬性:
justify-content: flex-start | flex-end | center | space-between | space-around;
3.事件
- 冒泡事件: 當一個組件上的事件被觸發(fā)后,該事件會向父節(jié)點傳遞。
- 非冒泡事件:當一個組件上的事件被觸發(fā)后,該事件不會向父節(jié)點傳遞。
以下為冒泡事件,其他組件事件無特殊申明都是非冒泡事件

小例
<view id='outter' bindtap='handleTap1'>
outer view
<view id='middle' catchtap='handleTap2'>
middle view
<view id='inner' bindtap='handleTap3'>
inner view
</view>
</view>
</view>
事件以bind或者catch開頭
bind事件綁定不會阻止冒泡事件向上冒泡,如bindtap。
catch事件綁定可以阻止冒泡事件向上冒泡,如catchtap。
因為handleTap2是catchtap,所以:
點擊 inner view,會先后觸發(fā) handleTap3、handleTap2
點擊 middle view,只會觸發(fā) handleTap2
點擊 outer view,會觸發(fā) handleTap1
如無特殊說明,當組件觸發(fā)事件時,邏輯層綁定該事件的處理函數(shù)會收到一個事件對象。(見下圖,事件對象)

4.頂部或底部固定
<!-- 頂部固定 -->
<view class="page__hd" style="position:fixed; top:0;width: 750rpx;">
......
</view>
<!-- 底部固定 -->
<view class="page__hd" style="position:fixed; bottom:0;width: 750rpx;">
......
</view>
5.修改數(shù)組對象中的某個值
//數(shù)據(jù)
data:{
role: [
{ id: '1', name: '管理員', checked: false },
{ id: '2', name: '一級代理', checked: false },
{ id: '3', name: '二級代理', checked: false },
],
}
//修改點擊項的checked值
clickSheet: function (e) {
var index = e.currentTarget.id;
//先用一個變量,把(role[0].checked)用字符串拼接起來
var checked= "role[" + index + "].checked";
//在如此set即可
this.setData({
[checked]: !this.data.role[index].checked,
})
},
6.修改某個頁面的值
A頁面跳轉(zhuǎn)B頁面,B修改A頁面數(shù)據(jù) 如下:
//A頁面
...
data: {
text: 0,
},
...
//B頁面
...
changeValue: function() {
var pages = getCurrentPages();
var prePage = pages[pages.length - 2];
prePage.setData({
text: 1
})
},
...
//此刻再回到A頁面其中text的值已經(jīng)變成了1
7循環(huán)
//Object的循環(huán)
var par = { a: 1, b: 2 };
for (var item in par) {
console.log(item + ':' + par[item])
}