开发小程序
3.1 全局配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| { "pages": [ "pages/index/index", "pages/home/home" ], "window": { "navigationBarBackgroundColor": "#FFDAB9", "navigationBarTextStyle": "black", "navigationBarTitleText": "李业" }, "tabBar": { "selectedColor":"#CD5C5C", "list": [ { "pagePath": "pages/index/index", "text": "首页", "iconPath": "static/tabbar/ic_menu_choice_nor.png", "selectedIconPath": "static/tabbar/ic_menu_choice_pressed.png" }, { "pagePath": "pages/home/home", "text": "我的", "iconPath": "static/tabbar/ic_menu_me_nor.png", "selectedIconPath": "static/tabbar/ic_menu_me_pressed.png" } ] } }
|
3.2 组件
3.3 样式
像素:
px
: 固定像素;
rpx
: (建议)会根据屏幕自动适配,一个屏幕共 750rpx
。
4.flex 布局 (css)
一种非常方便的布局方式。
在容器中记住 4 个样式即可。
1 2 3 4
| display: flex; // 使用 flex 布局 flex-direction: row; // 规定主轴的方向:row/column justify-content: space-around; // 元素在主轴方向上的排列方式: flex-start/flex-end/center/space-around/space-between align-items: center; // 元素在副轴方向上的排列方式: flex-start/flex-end/center/space-around/space-between
|
二、
1. 页面跳转
1、先在标签中绑定点击事件,固定格式:
bindtap
指定绑定哪个函数;
data-xxxxxx
传递参数。
1
| <view bindtap="clickMe" data-nid="123" data-name="test123" >点我跳转</view>
|
2、在 .js
文件中写函数:
使用 dataset
,可以获取传递的参数,是固定格式。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| Page({ ...
clickMe: function (e) { var nid = e.currentTarget.dataset.nid; var name = e.currentTarget.dataset.name; console.log(nid); console.log(name); wx.navigateTo({ url: '/pages/redirect/redirect?id=' + nid + '&name=' + name }); } })
|
3、跳转后,目标页面如果想要继续接受参数,可以在 .js
文件中的 onLoad
方法中接收。
1 2 3 4 5 6 7 8
| Page({
onLoad: function (options) { console.log(options); } })
|
注意:默认只能跳转到非 tabbar 页面
另一种跳转方式:直接通过标签
1
| <navigator url="/pages/redirect/redirect?id=666">跳转到新页面</navigator>
|
2. 数据绑定
显示
.wxml
中显示部分写法:
1
| <view>数据1:{{message}}</view>
|
.js
中定义要展示的数据:
1 2 3 4 5 6 7 8 9
| Page({
data: { message: "沙雕李业", } )}
|
数据更新
.wxml
中定义一个按钮:
1 2 3
| <view>数据2:{{message}}</view>
<button bindtap="changeData">点击修改数据</button>
|
.js
中使用 setData
函数修改 data
中的数据(必须,不然前端不重新渲染):
1 2 3 4 5 6 7 8 9
| Page({ data: { message:"沙雕李业", }, changeData:function(){ this.setData({ message: "大沙雕李业"}); } })
|
3.获取用户信息
.wxml
中:
1 2 3 4 5 6 7 8 9
| <!--my/my.wxml--> <text>猜猜我是谁?</text> <view>{{name}}</view> <view> <image src="{{avatar}}" style="height:200rpx;width:200rpx;"></image> </view>
<button open-type="getUserInfo" bindgetuserinfo="fetchInfo">登录查看答案</button>
|
.js
中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| data: { 'name': '', 'avatar': '' },
fetchInfo: function () { let that = this; wx.getUserInfo({ success: function (res) { console.log('success', res) that.setData({ name: res.userInfo.nickName, avatar: res.userInfo.avatarUrl }) }, fail: function (res) { console.log('fail', res) } }) },
|
手动唤醒授权页面的方法:
4. 获取用户位置信息
.wxml
中:
1
| <view bindtap="getLocalPath">{{localPath}}</view>
|
.js
中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| data: { localPath: "请选择位置", },
getLocalPath: function () { var that = this; wx.chooseLocation({ success: function (res) { that.setData({ localPath: res.address }); }, }) },
|
5. 微信的 for 指令
.wxml
中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <text>商品列表</text> <view> <view wx:for="{{dataList}}">{{index}} - {{item}}</view> <view wx:for="{{dataList}}" wx:for-index="idx" wx:for-item="x">{{idx}} - {{x}}</view> </view> <view> {{userInfo.name}} {{userInfo.age}} </view> <view> <view wx:for="{{userInfo}}">{{index}} - {{item}}</view> </view>
|
.js
中:
1 2 3 4 5 6 7
| data: { dataList: ["白浩为", "海狗", "常鑫"], userInfo: { name: "alex", age: 18 } },
|
6. 获取图片
.wxml
中:
1 2 3 4
| <view bindtap="uploadImage">请上传图片</view> <view class="container"> <image wx:for="{{imageList}}" src="{{item}}"></image> </view>
|
.js
中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| data: { imageList: ["/static/hg.jpg", "/static/hg.jpg"] },
uploadImage: function () { var that = this;
wx.chooseImage({ count: 9, sizeType: ['original', 'compressed'], sourceType: ['album', 'camera'], success: function (res) {
that.setData({ imageList: res.tempFilePaths });
that.setData({ imageList: that.data.imageList.concat(res.tempFilePaths) }); } }); },
|
注意:图片目前只是上传到了内存。