IT评测·应用市场-qidao123.com
标题:
变乱、页面跳转、wxml语法——微信小程序学习笔记
[打印本页]
作者:
商道如狼道
时间:
2025-3-20 10:47
标题:
变乱、页面跳转、wxml语法——微信小程序学习笔记
1. 变乱
1.1 变乱绑定
<!--pages/infoPage/infoPage.wxml-->
<button type="primary" bind:tap="childrenClicked">子按钮</button>
复制代码
// pages/infoPage/infoPage.js
Page({
childrenClicked(){
console.log("childrenClicked")
}
})
复制代码
1.2 变乱冒泡
<!--pages/infoPage/infoPage.wxml-->
<view class="parentContainer" style="background-color: burlywood;" bind:tap="parentClicked">
<button type="primary" bind:tap="childrenClicked">子按钮</button>
</view>
复制代码
// pages/infoPage/infoPage.js
Page({
parentClicked(){
console.log("parentClicked")
},
childrenClicked(){
console.log("childrenClicked")
}
})
复制代码
点击子按钮,会先执行子按钮“bind:tap”绑定的函数,再执行父控件“bind:tap”绑定的函数,如下图,
也就是此变乱传递了下去,称为“变乱冒泡”,如果不想传递给父控件,即阻止变乱冒泡,使用“catch:tap”举行绑定,即
<!--pages/infoPage/infoPage.wxml-->
<view class="parentContainer" style="background-color: burlywood;" bind:tap="parentClicked">
<button type="primary" catch:tap="childrenClicked">子按钮</button>
</view>
复制代码
1.3 变乱对象-传参
当绑定了变乱后 --》函数都可以接收一个参数 变乱对象(event)
childrenClicked(event) {
console.log("childrenClicked")
// 通过打印查看event结构
console.log(event);
//获取数据
var dataset = event.target.dataset;
console.log("name:" + dataset.name);
console.log("customName:" + event.mark.customName);
}
复制代码
此中,targert 为变乱触发者,currentTarget:变乱绑定者,当有变乱冒泡时,两个值大概不一样。
传参方式
data-*
mark:自界说属性
2. 页面跳转
2.1 navigator组件跳转(声明式导航)
导航 / navigator
最基本的跳转
<navigator url="/pages/loginPage/loginPage">
<button type="primary">登录</button>
</navigator>
复制代码
更多跳转方式--》open-type属性跳转方式: navigate:生存当前页面,跳转到应用内的某个页面,但不能跳到 tabbar 页面;
redirect:关闭当前页面,跳转到应用内的某个页面,但不能跳到t abbar 页面;
switchTab:跳转到 tabbar 页面,并关闭其他所有非 tabbar页面;
reLaunch:关闭所有页面,打开到应用内的某个页面;
navigateBack:关闭当前页面,返回上一页面或多级页面。(感觉像导航的返回按钮的功能),如果退回两级页面,delta代码退回的层数,代码这样写
<navigator open-type="navigateBack" delta="2">返回两级</navigator>
复制代码
跳转携带数据
携带数据的格式是单参数:[url]?[key1]=[val1] 或多参数[url]?[key1]=[val1]&[key2]=[key2]...
携带参数:
<!--pages/infoPage/infoPage.wxml-->
<navigator url="/pages/loginPage/loginPage?name=小米&age=12">点击跳转到新页面
</navigator>
复制代码
获取参数:
// pages/loginPage/loginPage.js
Page({
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
console.log(options);
}
})
复制代码
2.2 js跳转(编程式导航)
比如:
<!--pages/infoPage/infoPage.wxml-->
<button type="primary" bind:tap="switchLoginPage">跳转到登录页</button>
复制代码
// pages/infoPage/infoPage.js
Page({
switchLoginPage(){
wx.navigateTo({
url: '/pages/loginPage/loginPage',
})
}
})
复制代码
3. wxml 语法
3.1 模版语法
页面的js中界说一些变量
在wxml中使用 {{}} 包裹,表现数据
可以表现变量、算数运算、三元运算和逻辑判定,不能编写js语句或js方法
<!--pages/loginPage/loginPage.wxml-->
<view>-------wxml语法------</view>
<view>- 字符串</view>
<view>姓名:{{name}}</view>
<view>年龄:{{age}}</view>
<view>籍贯:{{postion}}</view>
<view>----------------------</view>
<view>- 对象</view>
<view>名称:{{userInfo.name}}</view>
<view>宽:{{userInfo.width}}</view>
<view>高:{{userInfo.height}}</view>
<view>颜色:{{userInfo.color}}</view>
<view>----------------------</view>
<view>- 数组</view>
<view>狗:{{animalsArr[0]}}</view>
<view>猫:{{animalsArr[1]}}</view>
<view>猴:{{animalsArr[2]}}</view>
<view>----------------------</view>
<view>算数运算:10+20={{10+20}}</view>
<view>三元运算:num>11 {{num>11?'真':'假'}}</view>
<view>逻辑判断:num>11 {{num>11}}</view>
// pages/loginPage/loginPage.js
Page({
/**
* 页面的初始数据
* wxml 中使用的变量,必须放在data中
*/
data: {
name:"王小明",
age:14,
postion:"河北",
userInfo:{
width:100,
height:200
},
animalsArr:["dog","cat","monkey"],
num:10
}
})
复制代码
如果在js中改变了变量值,想与页面中的一起变化,使用this.setData({key:val})
//改变数据
onChangeNumVal(){
this.setData({
age:this.data.age+1
})
},
//改变对象
onChangeObjectName(){
//修改对象值
// this.setData({
// 'userInfo.name':"矩形"
// });
//增加对象参数值和修改
//解压赋值
// const info = {...this.data.userInfo,color:"red",name:"矩形"};
// this.setData({
// userInfo:info
// });
//简写
const userInfo = {...this.data.userInfo,color:"red",name:"矩形"};
this.setData({
userInfo
});
},
//数组
//增加
onAddOfArr(){
// //方法一
// this.data.animalsArr.push("cow");
// this.setData({
// animalsArr:this.data.animalsArr
// })
// //方法二
// const animalsArr = this.data.animalsArr.concat("sheep");
// this.setData({
// animalsArr
// })
//方法三
const animalsArr = [...this.data.animalsArr,'rabbit'];
this.setData({
animalsArr
})
},
//删除
onDelOfArr(){
this.data.animalsArr.pop();
this.setData({
animalsArr:this.data.animalsArr
})
},
//修改
onModifyOfArr(){
this.data.animalsArr[0]="puppy";
this.setData({
// animalsArr:this.data.animalsArr
'animalsArr[0]':"puppy"
})
},
复制代码
3.2 列表渲染
列表渲染 | 微信开放文档
在组件上使用 wx:for 控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件。
默认数组的当前项的下标变量名默认为 index,数组当前项的变量名默认为 item
## js
goodsList:[{id:'1001',name:'牙膏',price:10},{id:'1002',name:'香皂',price:5},{id:'1003',name:'牛奶',price:50},{id:'1004',name:'八宝粥',price:60}]
## wxml
<view>-----------列表渲染-----------</view>
<view wx:for="{{goodsList}}" wx:key="index">
<text>{{item.id}}--{{item.name}}--{{item.price}}</text>
</view>
<view>-----------列表渲染-block-----------</view>
<view wx:for="{{goodsList}}" wx:key="index">
<block>{{item.id}}--{{item.name}}--{{item.price}}</block>
</view>
复制代码
3.3 条件渲染
3.3.1 wx:if wx:elif wx:else 的简单用法
## js
score:60,
## wxml
<view>
<input type="text" model:value='{{score}}' style="border: 1px solid #555555;" />
<text wx:if="{{score>=90&& score<=100}}">优秀</text>
<text wx:elif="{{score>=80&& score<90}}">良好</text>
<text wx:elif="{{score>=60&& score<80}}">及格</text>
<text wx:else>不及格</text>
</view>
复制代码
3.3.2 wx:if 与 hidden 的区别
wx:if 删除元素
hidden 不删除元素(隐藏元素)
<view>
<!-- <image src="/img/head.jpg" mode="aspectFit" style="width: 100rpx; height: 100rpx;" hidden="{{isShowImage}}"/> -->
<image src="/img/head.jpg" mode="aspectFit" style="width: 100rpx; height: 100rpx;" wx:if="{{isShowImage}}"/>
<button type="primary" size="mini" bind:tap="onChangeImgVisible">是否显示图片</button>
</view>
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/)
Powered by Discuz! X3.4