微信小程序-2

数据绑定

  • index.js
Page({data: {info: 'hello world',randomNumber: Math.random() * 10,imgSrc:'http://www.itheima.com/images/logo.png'}
})
  • index.wxml
<view>{{ info }}</view><view>{{ randomNumber >= 5 ? '随机数大于等于5' : '随机数小于5' }}</view><image src="{{ imgSrc }}" mode="widthFix"/>

事件绑定

常用的事件

类型绑定方式事件描述
tapbindtap 或 bind:tap手指触摸后马上离开,类似于 HTML 中的 click 事件
inputbindinput 或 bind:input文本框的输入事件
changebindchange 或 bind:change状态改变时触发

事件对象的属性

event.target 可简写为 e.target

属性类型说明
typeString事件类型
timeStampInteger页面打开到触发事件所经过的毫秒数
targetObject触发事件的组件的一些属性值集合
currentTargetObject当前组件的一些属性值集合
detailObject额外的信息
touchesArray触摸事件,当前停留在屏幕中的触摸点信息的数组
changedTouchesArray触摸事件,当前变化的触摸点信息的数组

bindtap

在小程序中,不存在 HTML 中的 onclick 鼠标点击事件,而是通过 tap 事件来响应用户的触摸行为

无参

  • index.wxml
<button type="primary" bindtap="btnTapHandler">按钮</button>
  • index.js
Page({// 定义按钮的事件处理函数btnTapHandler(e) {  // 按钮的 tap 事件处理函数console.log(e);   // 事件参数对象 e}
})

含参

  • index.wxml
<view>{{ count }}</view>
<button type="primary" bindtap="CountChange" data-info="{{ addNum }}">+10</button>
  • index.js
Page({// 点击按钮后事件处理函数CountChange(e) {     // 事件参数对象 ethis.setData({count: this.data.count + e.target.dataset.myinfo});},// 页面的初始数据data: {count: 0,addNum: 10}
})

bindinput

在小程序中,通过 input 事件来响应文本框的输入事件,语法格式如下:

  • index.wxml
<input type="text" value="{{ content }}" bindinput="inputHandler" />
<view>您输入的内容是:{{ content }}</view>
  • index.js
Page({data:{content: ''},inputHandler(e) {// e.detail.value 是变化过后,文本框最新的值this.setData({content: e.detail.value}) }
})

条件渲染

普通渲染

  • index.js
Page({data:{type: 1}
})
  • index.wxml
<view wx:if="{{ type === 1 }}"></view>
<view wx:elif="{{ type === 0 }}"></view>
<view wx:else> 未填写 </view>

批量渲染

如果要一次性控制多个组件的展示与隐藏,可以使用一个标签将多个组件包装起来,并在标签上使用 wx:if 控制属性,如下所示:(注意:并不是一个组件,它只是一个包裹性质的容器,不会在页面中做任何渲染)

  • 写如下代码:
<block wx:if="{{ true }}"><view>one</view><view>two</view>
</block>
  • 最终展示的结果是:
  <view>one</view><view>two</view>

hidden

  • index.js
Page({data:{flag: true}
})
  • index.wxml
<view hidden="{{ flag }}">条件为true的时候,隐藏元素,否则显示</view>

循环渲染

默认情况

  • index.js
Page({data:{arr: ['华为', '小米', '苹果', 'OPPO']}
})
  • index.wxml
<view wx:for="{{ arr }}">索引:{{ index }},每一项:{{ item }}
</view>

手动指定索引和当前项的变量名

<view wx:for="{{ arr }}" wx:for-index="idx" wx:for-item="itemName">索引:{{ idx }},每一项:{{ itemName }}
</view>

类似于 Vue 列表渲染中的 :key,小程序在实现列表渲染时,也建议为渲染出来的列表项指定唯一的 key 值,从而提高渲染的效率

  • index.js
Page({data:{userList: [{id: 1 ,name: '小明'},{id: 2 ,name: '小化'},{id: 3 ,name: '小工'}]},
})
  • index.wxml
<view wx:for="{{ userList }}" wx:key="id">{{ item.name }}
</view>

WXSS

屏幕适配

rpx 的实现原理非常简单:鉴于不同设备屏幕的大小不同,为了实现屏幕的自动适配,rpx 把所有设备的屏幕,在宽度上等分为 750 份

小程序在不同设备上运行的时候,会自动把 rpx 的样式单位换算成对应的像素单位来渲染,从而实现屏幕适配

样式导入

@import “/xxx.wxss”

window 配置

小程序窗口的组成部分

在这里插入图片描述

window 节点配置项

在这里插入图片描述

  • 设置导航栏的标题:
app.json -> window -> navigationBarTitleText
  • 设置导航栏的背景色
app.json -> window -> navigationBarBackgroundColor注意:颜色值只能接受6位16进制数,例如:#5a6b7c
  • 设置导航栏的标题颜色
app.json -> window -> navigationBarTextStyle

下拉刷新

app.json -> window -> enablePullDownRefresh注意:在 app.json 中启用下拉刷新功能,会作用于每个小程序页面

下拉刷新时的窗口背景色

app.json -> window -> backgroundColor注意:指定16进制的颜色值 #efefef

下拉刷新时的loading样式

app.json -> window -> backgroundTestStyle

设置上拉触底的距离

概念:上拉触底是移动端的专有名词,通过手指在屏幕上的上拉滑动操作,从而加载更多数据的行为

注意:默认距离为 50 px,如果没有特殊需求,建议使用默认值即可

app.json -> window -> onReachBottomDistance

tabBar 配置

基本介绍

tabBar 是移动端应用常见的页面效果,用于实现多页面的快速切换。

小程序中通常将其分为:

  • 底部 tabBar
  • 顶部 tabBar

注意:tabBar 中只能配置最少2个、最多 5 个 tab 页签,当渲染顶部 tabBar 时,不显示 icon,只显示文本

组成部分

在这里插入图片描述

在这里插入图片描述

tabBar 节点的配置项

在这里插入图片描述

  • app.json
{"pages": ["pages/index/index","pages/me/me"],"window": {"navigationBarTextStyle": "black","navigationBarTitleText": "WeChat","navigationBarBackgroundColor": "#ffffff"},"tabBar": {"list": [{...},{...},],"position": "top"}"style": "v2","componentFramework": "glass-easel","sitemapLocation": "sitemap.json","lazyCodeLoading": "requiredComponents"
}

list 中 tab 项

在这里插入图片描述

  • app.json
{"pages": ["pages/index/index","pages/me/me"],"window": {"navigationBarTextStyle": "black","navigationBarTitleText": "WeChat","navigationBarBackgroundColor": "#ffffff"},"tabBar": {"list": [{"pagePath": "pages/index/index","text": "首页"},{"pagePath": "pages/me/me","text": "我的"}],"position": "top"}"style": "v2","componentFramework": "glass-easel","sitemapLocation": "sitemap.json","lazyCodeLoading": "requiredComponents"
}

页面配置

在这里插入图片描述

  • index.json
{"usingComponents": {},"navigationBarBackgroundColor": "#00b261","backgroundTextStyle": "light"...
}

网络数据请求

请求限制

出于安全性方面的考虑,小程序官方对数据接口的请求做出了如下两个限制:

  • 只能请求 HTTPS 类型的接口
  • 必须将接口的域名添加到信任列表中

在这里插入图片描述

配置请求合法域名

配置步骤:登录微信小程序管理后台 => 开发 => 开发设置 => 服务器域名 => 修改 request 合法域名

注意事项:

  • 域名只支持 https 协议
  • 域名不能使用 IP 地址 或 localhost
  • 域名必须经过 ICP 备案
  • 服务器域名一个月内最多可申请 5 次修改

跳过限制

跳过 request 合法域名校验,如果后端程序员仅仅提供了 http 协议的接口,暂时没有提供 https 协议的接口,此时为了不耽误开发的进度,我们可以在微信开发者工具中(详情 => 本地设置),临时开启 开发环境不校验请求域名、TLS版本及HTTPS证书 选项,从而跳过 request 合法域名的校验。

注意:跳过 request 合法域名校验的选项,仅限在开发与调试阶段使用!

发起数据请求

调用微信小程序提供的 wx.request() 方法,可以发起数据请求,如下所示:

  • index.wxml
<button bindtap="getInfo">发起GET请求</button>
<button bindtap="postInfo">发起POST请求</button>
  • index.js
Page({// 发起GET数据请求getInfo() {wx.request({url: 'https://www.escook.cn/api/get',   // 请求的接口地址,必须基于 https 协议method: 'GET',      // 请求的方式data:{              // 发送到服务器的数据name: 'zs',age: 20},success: (res) => {   // 请求成功之后的回调函数console.log(res.data)}})},// 发起POST请求postInfo() {wx.request({url: 'https://www.escook.cn/api/post',method: "POST",data: {name: 'ls',age: 33},success: (res) => {console.log(res.data);}})},
})

页面刚加载时请求数据

我们需要在页面刚加载的时候,自动请求一些初始化的数据,此时需要在页面的 onLoad 事件中调用获取数据的函数

Page({// 发起GET数据请求getInfo() {wx.request({url: 'https://www.escook.cn/api/get',   // 请求的接口地址,必须基于 https 协议method: 'GET',      // 请求的方式data:{              // 发送到服务器的数据name: 'zs',age: 20},success: (res) => {   // 请求成功之后的回调函数console.log(res.data)}})},// 发起POST请求postInfo() {wx.request({url: 'https://www.escook.cn/api/post',method: "POST",data: {name: 'ls',age: 33},success: (res) => {console.log(res.data);}})},// 声明周期函数——监听页面加载onload: function (options) {this.getInfo()this.postInfo()},
})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/721396.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

低密度奇偶校验码LDPC(七)——SPA和积译码算法的简化

往期博文 低密度奇偶校验码LDPC&#xff08;一&#xff09;——概述_什么是gallager构造-CSDN博客 低密度奇偶校验码LDPC&#xff08;二&#xff09;——LDPC编码方法-CSDN博客 低密度奇偶校验码LDPC&#xff08;三&#xff09;——QC-LDPC码概述-CSDN博客 低密度奇偶校验码…

神经网络推理优化方法总结

&#x1f380;个人主页&#xff1a; https://zhangxiaoshu.blog.csdn.net &#x1f4e2;欢迎大家&#xff1a;关注&#x1f50d;点赞&#x1f44d;评论&#x1f4dd;收藏⭐️&#xff0c;如有错误敬请指正! &#x1f495;未来很长&#xff0c;值得我们全力奔赴更美好的生活&…

Jenkins 的安装(详细教程)

文章目录 一、简介二、安装前准备三、windows 安装与启动1. 方式一2. 方式二3. 方式三 四、创建管理员用户五、常用设置1. 配置镜像地址2. 更改工作目录3. 开启可注册用户4. 全局变量配置 一、简介 官网&#xff1a;https://www.jenkins.io 中文文档&#xff1a;https://www.j…

【MGR】MySQL Group Replication快速开始

目录 17.2 Getting Started 17.2.1 Deploying Group Replication in Single-Primary Mode 17.2.1.1 Deploying Instances for Group Replication 17.2.1.2 Configuring an Instance for Group Replication Storage Engines Replication Framework Group Replication Sett…

Java基础概念 1-6注释关键字字面量变量-基本用法变量-使用方式和注意事项变量练习-计算公交车的人数

Java基础概念 1-注释 单行注释 // 多行注释 /* */ 文档注释 /** */ --暂时不用 例: public class HelloWorld{ //main方法,表示程序的主入口.public static void main (String[] args){/*输出语句(打印语句)会把小括号内的内容进行输出打印.*/System.out.…

Ethersacn的交易数据是什么样的(2)

分析 Raw Transanction RLP&#xff08;Recursive Length Prefix&#xff09;是一种以太坊中用于序列化数据的编码方式。它被用于将各种数据结构转换为二进制格式&#xff0c;以便在以太坊中传输和存储。RLP 是一种递归的编码方式&#xff0c;允许对复杂的数据结构进行编码。所…

鸿蒙实战应用开发:【拨打电话】功能

概述 本示例通过输入电话&#xff0c;进行电话拨打&#xff0c;及电话相关信息的显示。 样例展示 涉及OpenHarmony技术特性 网络通信 基础信息 拨打电话 介绍 本示例使用call相关接口实现了拨打电话并显示电话相关信息的功能 效果预览 使用说明 1.输入电话号码后&#…

EIP-1559

EIP EIP是以太坊改进提案&#xff08;Ethereum Improvement Proposal&#xff09;的缩写。它是一种标准化的提案制度&#xff0c;用于描述和讨论对以太坊区块链网络的改进和升级。EIP的目的是提供一个开放的、透明的过程&#xff0c;让社区成员、开发者和其他利益相关者能够共同…

paypal绑卡教程

绑定信用卡到PayPal账户的流程可能会有轻微变化&#xff0c;具体步骤可能根据您所在的地区和PayPal的最新政策而有所不同。以下是一般的流程&#xff1a; 登录PayPal账户&#xff1a; 打开PayPal的官方网站或应用程序&#xff0c;使用您的账户登录凭据登录。 导航至钱包&#…

Kafka面经

1.Kafka如何保证消息不丢失 生产者&#xff1a; 1.Producer 默认是异步发送消息&#xff0c;这种情况下要确保消息发送成功&#xff0c;有两个方法 a. 把异步发送改成同步发送&#xff0c;这样 producer 就能实时知道消息发送的结果。 b. 添加异步回调函数来监听消息发送的结…

redis02 安装

官网下载 传送门https://redis.io/download/#redis-downloads 安装Redis mac m1安装 下载你需要版本的软件包放到指定的目录下进行解压 cd 到解压好的redis目录 运行下面的命令进行编译测试 sudo make test 中途可能会提示你安装make工具&#xff0c;按提示安装即可&…

JWT身份验证

在实际项目中一般会使用jwt鉴权方式。 JWT知识点 jwt&#xff0c;全称json web token &#xff0c;JSON Web令牌是一种开放的行业标准RFC 7519方法&#xff0c;用于在两方安全地表示声明。具体网上有许多文章介绍&#xff0c;这里做简单的使用。 1.数据结构 JSON Web Token…

Unity 动态加载音频和音效

想要加载音效和音频需要两个组件&#xff1a; 听&#xff1a; 播&#xff1a; 一收一发 在层级中&#xff0c;右键创建 音频源 &#xff0c;放入物体的子物体中。 播放 方式一 拖动需要播放的音频文件到&#xff0c;音频源组件中。 using System.Collections; using Syst…

Guitar Pro 8.1中文版永久许可证激活2024最新24位注册激活码生成器

Guitar Pro是一款非常受欢迎的音乐制作软件&#xff0c;它可以帮助用户创建和编辑各种音乐曲谱。从其诞生以来就送专门为了编写吉他谱而研发迭代的。 尽管这款产品可能已经成为全球最受欢迎的吉他打谱软件&#xff0c;在编写吉他六线谱和乐队总谱中始终处于行业领先地位&#…

Java求职技能清单(2024版)

一、Java基础扎实&#xff08;反射、集合、IO、NIO、多线程、设计模式、通信协议等基础技术&#xff09; &#xff08;一&#xff09;Java &#xff08;二&#xff09;网络IO &#xff08;三&#xff09;NIO模型 &#xff08;…

释放数据湖潜力:小红书如何实现数仓效率与成本的双重优化

在当今以数据为核心的商业环境中&#xff0c;企业正面临着海量数据的处理和分析挑战。为克服传统数据仓库在处理速度、灵活性和成本效率方面的局限&#xff0c;小红书数据仓库团队引入如 Apache Iceberg 等数据湖技术&#xff0c;将其与数仓架构相结合&#xff0c;以释放数据湖…

2024全网最全Excel函数与公式应用

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 引言 Excel是一款广泛应用于商业、教育和个人…

VUE3项目学习系列--项目配置(二)

在项目团队开发过程中&#xff0c;多人协同开发为保证项目格式书写格式统一标准化&#xff0c;因此需要进行代码格式化校验&#xff0c;包括在代码编写过程中以及代码提交前进行自动格式化&#xff0c;因此需要进行在项目中进行相关的配置使之代码格式一致。 一、eslint配置 …

【世界首富宝座易主】贝佐斯超越马斯克,再登世界首富宝座

贝佐斯超越马斯克&#xff0c;再登世界首富宝座 杰佛瑞普雷斯顿「杰夫」贝佐斯&#xff08;英语&#xff1a;Jeffrey Preston1964年1月12日&#xff09;&#xff0c;生于美国新墨西哥州&#xff0c;美国网际网路巨头亚马逊公司创始人及现任董事长&#xff0c;《华盛顿邮报》大股…

哈希的简单介绍

unordered系列关联式容器 在C98中&#xff0c;STL提供了底层为红黑树结构的一系列关联式容器&#xff0c;在查询时效率可达到 l o g 2 N log_2 N log2​N&#xff0c;即最差情况下需要比较红黑树的高度次&#xff0c;当树中的节点非常多时&#xff0c;查询效率也不理想。最好的…