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:变乱绑定者,当有变乱冒泡时,两个值大概不一样。
传参方式
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企服之家,中国第一个企服评测及商务社交产业平台。 |