微信小程序基础

常见标签

view视图

1
2
<view>hello</view>
<view>你好</view>

text文章

selcectable属性

1
2
<!--text相当于span,selectable文档是否可选-->
<text selectable>你好</text>

decode属性

1
2
<!--decode为译码如nbsp/lt/gt/amp/apos/ensp/emsp-->
<text decode>世界&nbsp;你好</text>

button按钮

type属性

primary首选按钮

1
<button type="primary">primary</button>

default默认按钮

1
<button type="default">default</button>

warn警告

1
<button type="warn">warn</button>

open-type属性

getPhoneNumber获取电话

1
<button open-type="getPhoneNumber">PhoneNumber</button>

getUserInfo获取用户信息

1
<button open-type="getUserInfo">getUserInfo</button>

contact客服

1
<button open-type="contact">contact</button>

checkbox复选

1
2
3
4
5
<!--复选框-->
<checkbox-group>
<checkbox value="1"></checkbox>
<checkbox value="2"></checkbox>
</checkbox-group>

radio单选

1
2
3
4
5
<radio-group>
<!--单选框-->
<radio value="1"></radio>
<radio value="2"></radio>
</radio-group>

block分块

1
2
3
4
5
<!--block里的标签属于一体,拆分过多标签堆积-->
<block>
<text style="margin-right: 6px;">首页</text>
<text style="margin-right: 6px;">物品</text>
</block>

input输入

1
2
3
4
5
6
<!--input-->
<input type="text"></input>
<input password></input>
<input type="number"></input>
<input disabled></input>
<input placeholder="请输入" placeholder-class="ph-style"></input>

事件绑定

bindinput相当于vue中的v-model实现双向数据绑定糖衣炮弹

1
2
3
4
5
<!--绑定事件-->
<!--bindinput实现双向绑定,data-来帮助传参-->
<input type="text" bindinput="ChangeMe"></input>
<button bindtap="clickMe" data-val1="1" data-test="2" >点击我</button>
<view>{{msg}} </view>
1
2
3
4
5
6
7
8
9
10
11
12
page({
data:{
msg:"原始数据"
},
ChangeMe:function(){
console.log("文本框变了");
},
//value.currentTarget.dataset可以获取data-的数据
clickMe:function(value){
console.log(value.currentTarget.dataset);
}
)}

数据绑定

1
2
3
<!--数据绑定MVVM-->
<!--model数据,v是view视图,vm是指page里面内容,是指vm中的一种协调数据和视图的功能-->
<button bindtap="clickMe2">点击我2</button>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
page({
data:{
msg:"原始数据"
},
clickMe2:function(event){
//只改变数据,不改变视图
// this.data.msg="原始数据改变了,视图不变";
//视图数据于真实数据一起改变
this.setData({
msg:"原始数据的内容和视图内容都发生了改变"
})
console.log(this.data.msg);
},
)}

微信API调用

1
2
3
4
5
6
<!--微信API调用-->
<!--获取用户的信息不能使用bindtap来绑定事件,而是使用bindgetuserInfo-->
<!--将open-type="getUserInfo"属性获得的用户数据给到绑定事件getUserInfo-->
<button open-type="getUserInfo" bindgetuserinfo="getUserInfo">获取用户信息</button>
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">获取电话</button>
<button open-type="contact" bindcontact="getContact">联系客服</button>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
page({
//获取用户信息
getUserInfo(e){
console.log(e)
},
//获取用户电话
getPhoneNumber(e){
console.log(e);
},
//联系客服
getContact(e){
console.log(e);
},
})

富文本标签

1
2
3
4
<!--富文本控件使用rich-text-->
<!--该标签类似于vue中的v-html可以用来放标签事件而不是单纯的文本--->
<!--img标签只认网络图片,站内路径不会被认识-->
<rich-text nodes="{{msg2}}"></rich-text>
1
2
3
4
5
page({
data:{
msg2:"<b>加粗</b><p style='color:red'>变红</p>"
},
)}

微信弹窗

弹窗样式

1
2
<!--小程序弹窗功能-->
<button bindtap="showAlert">弹窗按钮</button>
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
29
30
//弹窗的使用
//一个弹窗事件只能有一次弹窗,如果有两次事件,会被后面的覆盖掉
showAlert(){
//icon状态:loading(加载)、success(成功选中)、none(提示),duration持续两秒
wx.showToast({
title: '成功',
icon:'success',
duration:2000
})
//showloading是一种icon为loading的简写
wx.showLoading({
title: '加载中',
duration:2000
})
//模式窗体二选一
wx.showModal({
title: '提示',
content: '这是一个模式框',
complete: (res) => {
if (res.cancel) {
console.log("点击了取消");
}

if (res.confirm) {
console.log("点击了确定");
}
}
})
},

弹窗跳转

1
2
<!--页面跳转-->
<button bindtap="navi">页面跳转</button>
1
2
3
4
5
6
7
8
//弹窗跳转
navi(){
wx.navigateTo({
//不要选定test.wxml是不会默认跳转的
//当前页面传参到另外的页面?id=1
url: '/pages/test1/test1?id=1',
})
},

弹窗前后端交互

1
<button bindtap='getData'>获取后端数据</button>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//弹窗实现前后端交互request
getData(){
var that=this;
wx.request({
//获取后端数据jobs类
url: 'http://localhost:10737//jobs',
//request是一个回调函数,this并不能获取到相关的数据,要用that变量作为中转来实现交互
success(res){
var data = res.data;
that.setData({
jobs:data
})
console.log(that.data.jobs);
}
})
}