js的运用
在js中的page.data中写入样式。在wxml中使用view{{}}view使用
调用js时必须使用{{}}包裹起来,不用加''
Page({
data: {
Name:'风耳',
age:'18'
}
//js中对象的使用
<view>{{age}}</view>
<view>{{Name}}</view>
点击事件
点击按钮,将对象中的某一项进行改变(在此为改变名字)
点击事件使用bindtap
在页面中进行展示使用this.setData
Page({
data: {
Name:'风耳',
age:'18'
},
change(){ //在点击事件中自带一个事件event,可直接调用event。enent在change(){}中的()里
this.setData({
Name:'张三'
})
}
})
<button bindtap="change">按钮</button>
条件渲染
单击按钮进行隐藏(if事件)if事件就是当结果为true时显示一种结果,当结果为else时显示另一种结果。及只会在两者中显示一种,隐藏一种。if事件的使用在内容里输入wx:
<view wx:if="{{sigout}}">
<text>12344</text>
<text bindtap="back">退出登录</text>
</view>
<view wx:else> //wx:else为否则,及if的另一种结果
<input type="text" placeholder="请输入手机号码"/>
<button bindtap="login">登录</button>
</view>
此为内容
Page({
data: {
sigout:false
},
login(){
this.setData({
sigout:true
})
},
back(){
this.setData({
sigout:false
})
}
}
)
此为js
点击隐藏和再次点击显示
<button bindtap="none">点击按钮</button>
<view wx:if="{{list}}" class="flex fdc">
<text>调试调试调试</text>
<text>调试调试调试</text>
<text>调试调试调试</text>
<text>调试调试调试</text>
<text>调试调试调试</text>
<text>调试调试调试</text>
<text>调试调试调试</text>
<text>调试调试调试</text>
</view>
Page({
data: {
list:true
},
none(){
this.setData({
list: !this.data.list //!表示与原来相反(this.data.list第一次的状态为ture,点击一次之后状态为false,再点击又变成了true)
})
}
}
)
列表条件渲染
在js中输入了一定循环次数,当调用时即可将内容进行循环展示
<text class="flex fdc" wx:for="{{list1}}">1111</text>
//对1111进行循环4次
Page({
data: {
list1:['aa','bb','cc','dd']
}
}
)
当data里数组中为对象时
<view wx:for="{{list1}}">
<text>{{item .name}}</text>---
<text>{{item.age}}</text>
</view>
Page({
data: {
list1:[
{
name:'风耳',
age:18
},
{
name:'张三',
age:18
}
]
}
}
)
获取后台数据
在js中 onLoad中进行。onLoad是在加载该页面时自动进行更新
Page({
data: {
list:[]
},
// 当页面刷新时自动执行onLoad
onLoad(){
// 发送请求得到后台数据,在这最好是对下面的内容进行一个命名,以方便之后的调用。及将wx.request到结束的代码使用一个数组进行包裹,之后在再onLoad中进行调用
wx.request({
// 数据地址
url:'http://81.71.65.4:3006/destination/list',
// 获取工具(必须使用箭头函数)
success:(rel)=> {
// 在控制台展示数据
console.log(rel.data.result)
// 在页面中显示
this.setData({
list:(rel.data.result)
})
}
})
}
}
)
之后在wxml中进行运用
<text>目的地推荐</text>
<navigator url="/pages/shouye/mudidi/mudidi" hover-class="navigator-hover">
<view wx:for="{{list}}">
<image class="rul" src="{{item.imageUrl}}"></image>
<view class="flex fdc jc-c ml-15 f12">
<text class="word">{{item.name}}</text>
<text class="mt-5">{{item.desc}}</text>
<text class="bor mt-5">{{item.address}}</text>
</view>
</view>
</navigator>
例二:将请求后台数据使用一个对象进行包裹
Page({
data: {
list:[]
},
onLoad(){
this._list();
},
_list(){
wx.request({
url:'http://81.71.65.4:3006/discover/list?kind=01&currPage=1&pageSize=7',
success:(res)=>{
console.log(res.data.result);
this.setData({
list:res.data.result
})
}
})
}
}
)
三目运算符
及可以将if事件进行简写,可在小程序中直接调用
<body>
<script>
var isLogin = false;
var _bb = true
var aa = ''
if(isLogin){
aa = '已经出现'
}else{
aa = '未出现'
}
console.log(aa)
var aa2 = _bb?'已经出现':'未出现' //aa2 = 表明声明一个名称等于aa2的容器判断条件为_bb,?'已经出现'表明当条件符合时会是已经出现,:'未出现'表明当条件不符合时出现未出现
console.log(aa2)
</script>
</body>
自定义属性(可用来做点击哪里哪里高亮)
自定义属性中所用数值必须时两位数
因为小程序点击事件没储蓄栏及html里onclick="but()"的()。所有需要运用到自定义属性来进行。
- 首先确定点击事件及bindtap=""
- 对需要的标签进行自定义属性
- 在js中找到自定义属性里需要的属性进行提取
- 将提取出来的属性用来帮助判断是否符合条件,及class=(此时就用到了三目运算符)
5.将判断结果进行展示
<view class="flex jc-sa">
<text data-num="01" bindtap="aa" class="{{num==1?'active':'aa'}}">第一个</text>
<text data-num=02" bindtap="aa" class="{{num==2?'active':'aa'}}">第二个</text>
<text data-num="03" bindtap="aa" class="{{num==3?'active':'aa'}}">第三个</text>
</view>
aa(event){
console.log(event)
aa(event){
console.log(event.target.dataset.num)
Page({
data: {
num:1,
},
aa(event){
// console.log(event.target.dataset.num)
var newNum = event.target.dataset.num;
this.setData({
num : newNum
})
}
}
)
当调取的数据需要根据不同的选项进行调取时(及数据根据高亮部分进行变换)
// pages/faxian/faxian.js
Page({
data: {
kind:1,
list:[]
},
di(event){
console.log(event.target.dataset.kind)
// var newKind = event.target.dataset.num;
this.setData({
kind:event.target.dataset.kind
})
this.getList(); //想要调取到对应的数据,必须在高亮部分也进行展示
},
onLoad(){
this.getList();
},
getList(){
wx.request({
url:'http://81.71.65.4:3006/discover/list?kind='+this.data.kind, //?kind后面为后台数据的定义,将之删除,在单引号后面添加连接符+,再加上this.data.kind(及就是根据kind值进行调换)
success:(res)=>{
console.log(res.data);
this.setData({
list:res.data.result
})
}
})
}
})
<!--pages/faxian/faxian.wxml-->
<view class="hearder flex jc-sa tac">
<text data-kind="01" bindtap="di" class="{{kind==01?'aaa':'bbb'}}">路线</text>
<text data-kind="02" bindtap="di" class="{{kind==02?'aaa':'bbb'}}">美食</text>
<text data-kind="03" bindtap="di" class="{{kind==03?'aaa':'bbb'}}">活动</text>
</view>
<!-- 列表 -->
<view wx:for="{{list}}" class="box flex mt-5 f12 jc-sa aic" >
<image class="rul" mode="scaleToFill" src="{{item.imageUrl}}"></image>
<text class="word fg1 ml-10">{{item.title}}</text>
</view>
<view class="aa">没有更多了</view>
登录练习(能够从后端调取数据)
<view class="box w100p flex aic bg-fff">
<text class="ml-20">手机号码:</text>
<input bindinput="getNum" type="text" maxlength="{{11}}" //duplaceholder="请输入手机号码" value="{{phone}}"/>
// 对输入框进行一个点击事件,使用bandinput,当输入框中输入数据时即可运行
</view>
data: {
phone:'',
},
// 第一步,获取输入框中的手机号码。
getNum(enevt){
console.log(enevt.detail.value)
this.setData({
phone:enevt.detail.value
})
},
<view class="box1 w100p flex aic jc-sb bg-fff">
<text class="ml-20">验证码:</text>
<input type="text" placeholder="请输入验证码" value="{{smsCode}}"/>
<button class="mr-20 flex aic jc-c" bindtap="getNum1" size="mini">获取验证码</button>
</view>
getNum1(enevt){
console.log(enevt)
wx.request({
url:'http://81.71.65.4:3006/user/getSmsCode',
data:{
phone:this.data.phone
}, //此为请求后端数据时的附加条件,及我要拿去关于这个手机号码的数据
success:(res)=>{
console.log(res.data.result.smsCode)
this.setData({
smsCode:res.data.result.smsCode
})
}
})
},
同理,当点击登录时要同时运用到手机号码和验证码
<view class="box1 w100p flex aic jc-sa bg-fff">
<button class="ml-20 flex aic jc-c" size="mini">注册</button>
<button class="mr-20 flex aic jc-c" size="mini" bindtap="sigin">登录</button>
</view>
sigin(enevt){
wx.request({
url:'http://81.71.65.4:3006/user/loginBySmsCode',
data:{
phone:this.data.phone,
smsCode:this.data.smsCode
},
success:(res)=>{
console.log(res.data)
wx.switchTab({
url: '/pages/me/me', //wx.switchTab({})即跳转到tab栏里面的页面
})
}
})
},
数据的储存和调用
- 先对需要的数据进行储存(在例子中是对成功运行的数据进行储存,因此在success中进行储存{要存储数据必须获取到数据}
sigin(enevt){
wx.request({
url:'http://81.71.65.4:3006/user/loginBySmsCode',
data:{
phone:this.data.phone,
smsCode:this.data.smsCode
},
success:(res)=>{
wx.setStorageSync('phone',this.data.phone) //此为存储数据
console.log(res.data)
wx.switchTab({
url: '/pages/me/me',
})
}
})
},
- 调用数据.在js中调用数据,并将调用出来的数据在html中展示
<view class="hearder">
<image class="rel rel" src="../../icon/me-img/avtBg.jpg"></image>
<image class="rel-header abs" src="../../icon/me-img/下载.png"></image>
<view class="flex ">
<text class="sign fff abs">{{phone}}</text> //在此展示调用出来的数据
<navigator wx:else class="sign fff abs" url="/pages/me/sigin/sigin" hover-class="navightor-hover">立即登录</navigator>
</view>
</view>
onShow(options) {
var phone = wx.getStorageSync('phone') //在此进行数据调取
this.setData({
phone:phone
})
},
- 在html中进行if判断,让其只展示一个
- 点击退出登录时,让其存储的数据清空。在这是页面刷新onLoad应该使用onShow。
- onLoad为进入页面时刷新一次,之后不再进行刷新,第一次刷新为什么样子就是什么样子。onShow为当页面进行展示时就进行刷新。
- 完整的代码
- .点击登录存储数据并进行跳转
// 点击登录进行页面的跳转
sigin(enevt){
wx.request({
url:'http://81.71.65.4:3006/user/loginBySmsCode',
data:{
phone:this.data.phone,
smsCode:this.data.smsCode
},
success:(res)=>{
wx.setStorageSync('phone',this.data.phone)
console.log(res.data)
wx.switchTab({
url: '/pages/me/me',
})
}
})
},
- 调取数据和点击退出时清除数据
Page({
/**
* 页面的初始数据
*/
data: {
phone:''
},
/**
* 生命周期函数--监听页面加载
*/
onShow(options) {
var phone = wx.getStorageSync('phone')
this.setData({
phone:phone
})
},
logout(){
wx.removeStorageSync('phone');
this.setData({
phone:''
})
},
})
*我的页面展示html
<!--pages/me/me.wxml-->
<!-- 头部 -->
<view class="hearder">
<image class="rel rel" src="../../icon/me-img/avtBg.jpg"></image>
<image class="rel-header abs" src="../../icon/me-img/下载.png"></image>
<view class="flex ">
<text wx:if="{{phone}}" class="sign fff abs">{{phone}}</text>
<navigator wx:else class="sign fff abs" url="/pages/me/sigin/sigin" hover-class="navightor-hover">立即登录</navigator>
</view>
</view>
<!-- 列表 -->
<view class="list flex fdc mt-10">
<navigator url="/pages/shouye/liebiao/liebiao" hover-class="navightor-hover">
<view class="item flex jc-sb aic">
<text>我的订单</text>
<text class="iconfont icon-yuanquanyoujiantou"></text>
</view></navigator>
<view class="item flex jc-sb aic">
<text>我的共享卡</text>
<text class="iconfont icon-yuanquanyoujiantou"></text>
</view>
<view class="item flex jc-sb aic">
<text>我的优惠券</text>
<text class="iconfont icon-yuanquanyoujiantou"></text>
</view>
<navigator url="/pages/me/shoucang/shoucang" hover-class="navigator-hover">
<view class="item flex jc-sb aic">
<text>我想去</text>
<text class="iconfont icon-yuanquanyoujiantou"></text>
</view>
</navigator>
<navigator url="/pages/me/zuji/zuji" hover-class="navigator-hover">
<view class="item flex jc-sb aic">
<text>我的足迹</text>
<text class="iconfont icon-yuanquanyoujiantou"></text>
</view></navigator>
<view bindtap="logout" class="item flex jc-sb aic">
<text>退出登录</text>
<text class="iconfont icon-yuanquanyoujiantou"></text>
</view>
</view>