微信小程序(note4:block&属性插值&列表渲染&条件渲染&事件&数据请求)

本文详细介绍了微信小程序中的条件渲染技术,包括block元素的使用、wx:if与wx:else的配合,以及如何根据数据动态显示不同组件。同时,深入探讨了组件间的数据传递与事件处理,为开发者提供了实践案例。
摘要由CSDN通过智能技术生成

block


微信小程序官方文档 [框架]-[WXML语法参考]-[条件渲染]:https://developers.weixin.qq.com/miniprogram/dev/reference/wxml/conditional.html

<block/> 并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性;主要用来包裹,而且不会生成多余的标签,类似于空标签


属性插值


微信小程序官方文档 [框架]-[WXML语法参考]-[数据绑定]:https://developers.weixin.qq.com/miniprogram/dev/reference/wxml/data.html

双引号里面双花括号:

<view 属性="{{变量}}"></view>

组件属性


微信小程序官方文档 [指南]-[小程序框架]-[视图层]-[WXML]:https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/

微信小程序官方文档 [框架]-[WXML语法参考]:https://developers.weixin.qq.com/miniprogram/dev/reference/wxml/


wx:for 循环遍历

wx.if wx:else 条件渲染 两者若一起使用,需放在上下位置,中间不能有其他组件

<view wx:if="{{1===0}}">测试wx:if<view>
<view wx:elif="{{1===1}}">111<view>
<view wx:elif="{{1===2}}">222<view>
<view wx:else>测试wx:else<view>

练习:根据数据不同,显示不同的组件


这是我们想要实现的效果,一串数据里面,每一条数据里图片的个数不一,少于三张的就展示一张(如标题1);多于或等于三张的,就显示三张(如标题2)。这样虽然我们渲染的都是这组数据,但是根据图片个数不同,分别用不同的组件来展示他们。
在这里插入图片描述

思路:既然要显示不同样式的组件,那就要新建两种组件;然后在展示页,通过 wx:if 和 wx:else 来分别渲染组件;然后进行值的传递,实现动态数据渲染。

展示页面:定义数据,向子组件传参

>>render.js

Page({
    data: {
        arr:[
            {id:"R0001",title:"标题1",img1:"../../imgs/timg.jpg"},
            {id:"R0002",title:"标题2",img1:"../../imgs/333.jpg",img2:"../../imgs/111.jpg",img3:"../../imgs/222.jpg"},
            {id:"R0003",title:"标题3",img1:"../../imgs/timg.jpg"},
            {id:"R0004",title:"标题4",img1:"../../imgs/111.jpg",img2:"../../imgs/111.jpg",img3:"../../imgs/333.jpg"},
            {id:"R0005",title:"标题5",img1:"../../imgs/333.jpg",img2:"../../imgs/111.jpg",img3:"../../imgs/222.jpg"}
        ]
    }
)}
>>render.wxml

<view wx:for="{{arr}}">
	<comptwo wx:if="{{item.img3}}" objval="{{item}}" />
	<compone wx:else objval="{{item}}" />
</view>

组件1:接收参数,规定接收类型,然后渲染

>>compone.js

Component({
    properties: {
        objval:Object
    },
)}
>>compone.wxml

<view>
	<text class="text1">{{objval.title}}</text>
	<image class="text_one" src="{{objval.img1}}"></image>
</view>
>>compone.wxss

.text_one{
    width: 200rpx;
    height: 200rpx;
    margin-left: 50%;
    display: inline-block;
    vertical-align: middle;
}
.text1{
    display: inline-block;
    vertical-align: middle;
}

组件2:

>>comptwo.js

Component({
    properties: {
        objval:Object
    },
)}
>>comptwo.wxml

<text>{{objval.title}}</text>
<view>
	<image class="text_two" src="{{objval.img1}}"></image>
	<image class="text_two" src="{{objval.img2}}"></image>
	<image class="text_two" src="{{objval.img3}}"></image>
</view>

导航传参


导航跳转有 声明式 编程式 两种方式。

get传参的其中一种方式,直接在url后增加参数,然后跳转到另一个页面在 onLoad钩子中接收 。

声明式:

<navigator url="../getdata/getdata?name=sky&age=18">
	<view wx:for="{{arr}}">
		<comptwo wx:if="{{item.img3}}" objval="{{item}}" />
		<compone wx:else objval="{{item}}" />
	</view>
</navigator>

编程式:比如事件触发后跳转

<view bindtap="skiprou" wx:for="{{arr}}">
	<comptwo wx:if="{{item.img3}}" objval="{{item}}" />
	<compone wx:else objval="{{item}}" />
</view>
// 编程式导航跳转
skiprou(e){
    wx.navigateTo({
      url: '../getdata/getdata?name=susan&age=22',
    })
},

另外一个页面接收参数:

Page({
	//生命周期函数--监听页面加载
	onLoad: function (options) {
		console.log(options)
	},
)}
如果想要传递不同的参数呢,可以通过 data-这个属性:

在这里插入图片描述
然后打印这个tap事件对象:
在这里插入图片描述
下面这个是打印的e里面,可以看到有我们自定义的whatever属性及值:
在这里插入图片描述
在跳转过去的页面也能后看到打印的参数:
在这里插入图片描述

wxml事件


用户与程序交互的唯一入口

微信小程序官方文档 [指南]-[小程序框架]-[事件系统]:https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/event.html


数据请求


微信小程序官方文档 [API]-[网络]-[发起请求]:https://developers.weixin.qq.com/miniprogram/dev/api/network/request/wx.request.html

不校验合法域名,仅能在开发中使用,一旦上线,还是得备案合法域名。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值