百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

微信小程序开发极简入门(五):WXML标签&页面跳转、传参

zhezhongyun 2025-02-17 15:00 26 浏览

像我这样的老Java开发,尤其是写过JSP的开发,肯定用过JSTL,什么,wxml的也有非常相像的实现。

列表渲染

上文做了很简单的展示。

js做数据准备:

data:{
productList:[
{"productImg":"产品图片1","productId":"1","productName":"商品名称1","price":10000},
{"productImg":"产品图片2","productId":"2","productName":"商品名称2","price":22200}
]
}

ID:{{product.productId}};图片:{{product.productImg}};名称:{{product.productName}};价格:{{product.price}}
  • wx:for,绑定的数组。
  • wx:for-index,当前元素的下标,默认为index。
  • wx:for-item,当前元素的变量名,默认为item。
  • wx:key,列表中项目的唯一标识。如果不配置此项,编译器会报warning。如果此列表是动态会改变的(排序、添加新元素等),则需要指定元素中唯一的属性(例如ID)为key。好处是数据发生变更,渲染层重新渲染此组件时,会在组件本身进行处理,而非重新创建一个新组件,从而提高渲染效率。

注意:block不是view、text这样的组件,它就是把一些组件包起来,类似group的概念,也不会渲染出来,就是搭配wx:for、wx:if使用。

条件渲染



用处主要是判断要不要渲染该组件。与hidden不同,wx:if是决定此组件要不要渲染出来,hidden是肯定会渲染出来,只是显示不显示而已。

查看此页面,会显示一个button,源代码,也只会出现1个button。如果是hidden,则源代码会有3个button,只显示1个而已。

页面跳转

其实就是WEB页面的`详情`。

跳转
重定向
切换TAB
重启

open-type有几种:

  • navigate。默认的,当前页面保存,跳转到目标页面(不能跳转到tabBar页面),目标页面可以回退到当前页面。
  • redirect。重定向,当前页面关闭,跳转到目标页面(不能跳转到tabBar页面),目标页面无法回退到当前页面。
  • switchTab。顾名思义,跳转到某个tabBar页面,其他非tabBar页面全关闭。
  • reLaunch。重启。除了打开目标页,关闭其他所有页面。
  • navigateBack。就是浏览器的后退按钮。

页面跳转传参

页面跳转传参的方法很多,比如通过app.js里的globalData传递,也可以通过本地缓存的存取(wx.setStorage)。

不过不是太推荐这两种。它们都算是全局数据,俩页面的数据传递还是不要上升到全局的层面了。微信官方文档在数据缓存一节,就很明确地说了:

storage 应只用来进行数据的持久化存储,不应用于运行时的数据传递或全局状态管理。启动过程中过多的同步读写存储,会显著影响启动耗时。

方法有3:

  • wxml的url传参。
  • js的方法传参。

这两者实际是一个东西的两种写法而已

源页面wxml:

跳转

源页面js:

navigatorWithData() {
wx.navigateTo({
url: '/pages/locationapi/locationapi?from=js&id=2',
})
}

目标页面js:

onLoad(options) {
  console.log(options.from)
  console.log(options.id)
  if(options.id){
    this.setData({from:options.from,id:options.id})
  }
}
  • EventChannel传参

页面间事件通信通道,稍微复杂一点,但是相比用url传参,可以传更复杂的数据。

源页面wxml:

源页面js:

navigatorWithData2() {
wx.navigateTo({
url: '/pages/locationapi/locationapi',
events: {
// 持续监听名为returnParam的事件,获取被打开页面传送到当前页面的数据
returnParam: function (data) {
console.log(data)
}
},
success: function (res) {
// 触发名为param的事件,通过eventChannel向被打开页面传送数据
res.eventChannel.emit('param', {
from: 'js2',
id: 3
})
}
})
}

目标页面js:

onLoad(options) {
const eventChannel = this.getOpenerEventChannel()
//触发returnParam事件,回传数据给调用页面
eventChannel.emit('returnParam', {data: '回传数据'});
//将接收的参数存入本页面的data
var that=this
//持续监听param事件
eventChannel.on('param', function (data) {
console.log("接收的参数",data)
that.setData({from:data.from,id:data.id})
})
}

一般目标页面拿到源页面传过来的参数,要放在自己的data进行处理的,不过写法就不是this.setData了,上面加了that的变量,为什么是这么个的写法,在后面的文章会详细解释。

相关推荐

JPA实体类注解,看这篇就全会了

基本注解@Entity标注于实体类声明语句之前,指出该Java类为实体类,将映射到指定的数据库表。name(可选):实体名称。缺省为实体类的非限定名称。该名称用于引用查询中的实体。不与@Tab...

Dify教程02 - Dify+Deepseek零代码赋能,普通人也能开发AI应用

开始今天的教程之前,先解决昨天遇到的一个问题,docker安装Dify的时候有个报错,进入Dify面板的时候会出现“InternalServerError”的提示,log日志报错:S3_USE_A...

用离散标记重塑人体姿态:VQ-VAE实现关键点组合关系编码

在人体姿态估计领域,传统方法通常将关键点作为基本处理单元,这些关键点在人体骨架结构上代表关节位置(如肘部、膝盖和头部)的空间坐标。现有模型对这些关键点的预测主要采用两种范式:直接通过坐标回归或间接通过...

B 客户端流RPC (clientstream Client Stream)

客户端编写一系列消息并将其发送到服务器,同样使用提供的流。一旦客户端写完消息,它就等待服务器读取消息并返回响应gRPC再次保证了单个RPC调用中的消息排序在客户端流RPC模式中,客户端会发送多个请...

我的模型我做主02——训练自己的大模型:简易入门指南

模型训练往往需要较高的配置,为了满足友友们的好奇心,这里我们不要内存,不要gpu,用最简单的方式,让大家感受一下什么是模型训练。基于你的硬件配置,我们可以设计一个完全在CPU上运行的简易模型训练方案。...

开源项目MessageNest打造个性化消息推送平台多种通知方式

今天介绍一个开源项目,MessageNest-可以打造个性化消息推送平台,整合邮件、钉钉、企业微信等多种通知方式。定制你的消息,让通知方式更灵活多样。开源地址:https://github.c...

使用投机规则API加快页面加载速度

当今的网络用户要求快速导航,从一个页面移动到另一个页面时应尽量减少延迟。投机规则应用程序接口(SpeculationRulesAPI)的出现改变了网络应用程序接口(WebAPI)领域的游戏规则。...

JSONP安全攻防技术

关于JSONPJSONP全称是JSONwithPadding,是基于JSON格式的为解决跨域请求资源而产生的解决方案。它的基本原理是利用HTML的元素标签,远程调用JSON文件来实现数据传递。如果...

大数据Doris(六):编译 Doris遇到的问题

编译Doris遇到的问题一、js_generator.cc:(.text+0xfc3c):undefinedreferenceto`well_known_types_js’查找Doris...

网页内嵌PDF获取的办法

最近女王大人为了通过某认证考试,交了2000RMB,官方居然没有给线下教材资料,直接给的是在线教材,教材是PDF的但是是内嵌在网页内,可惜却没有给具体的PDF地址,无法下载,看到女王大人一点点的截图保...

印度女孩被邻居家客人性骚扰,父亲上门警告,反被围殴致死

微信的规则进行了调整希望大家看完故事多点“在看”,喜欢的话也点个分享和赞这样事儿君的推送才能继续出现在你的订阅列表里才能继续跟大家分享每个开怀大笑或拍案惊奇的好故事啦~话说只要稍微关注新闻的人,应该...

下周重要财经数据日程一览 (1229-0103)

下周焦点全球制造业PMI美国消费者信心指数美国首申失业救济人数值得注意的是,下周一希腊还将举行第三轮总统选举需要谷歌日历同步及部分智能手机(安卓,iPhone)同步日历功能的朋友请点击此链接,数据公布...

PyTorch 深度学习实战(38):注意力机制全面解析

在上一篇文章中,我们探讨了分布式训练实战。本文将深入解析注意力机制的完整发展历程,从最初的Seq2Seq模型到革命性的Transformer架构。我们将使用PyTorch实现2个关键阶段的注意力机制变...

聊聊Spring AI的EmbeddingModel

序本文主要研究一下SpringAI的EmbeddingModelEmbeddingModelspring-ai-core/src/main/java/org/springframework/ai/e...

前端分享-少年了解过iframe么

iframe就像是HTML的「内嵌画布」,允许在页面中加载独立网页,如同在画布上叠加另一幅动态画卷。核心特性包括:独立上下文:每个iframe都拥有独立的DOM/CSS/JS环境(类似浏...