微信小程序相关操作示例

article/2025/9/18 17:00:46

微信小程序相关操作示例

  • wxml-写页面
    • for指令
    • 绑定事件
    • 数据绑定
    • 获取当前用户相关信息的方式
    • 跳转
    • 展示用户信息
    • 表单提交
    • 键盘输入的控制
  • js-写方法
    • 初始数据(字典):
    • 方法函数:
    • 存储图片到云开发平台存储
    • 访问服务器的request方式
    • 获取当前用户信息
    • 获取当前用户头像和名字
    • 选择位置
    • 表单提交
    • 键盘输入的控制
  • wxss-写样式

这里设置方便后面访问服务器不校验域名

wxml-写页面

for指令

<image wx:for="{{imagelist}}" src="{{item}}"></image>

绑定事件

<button type="warn" bindtap="uploadimg">上传图片</button>
<button bindtap="pretectpic">开始运行</button>

数据绑定

这种花括号的形式,数据可以定义在js文件里面的data里面

<text>数据绑定</text>
<view>数据:{{message}}</view>

获取当前用户相关信息的方式

<view>当前用户名:{{name}}</view>
<view>当前头像<image src="{{pathurl}}" style="height:200rpx;width: 200rpx;"></image>
</view>
<button open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo">授权登录</button>

跳转

<!-- 跳转 -->
<view bindtap="clickMe" data-nid="123" data-name="小米">跳转方式一</view>
<navigator url="/pages/bind/bind">跳转方式二</navigator>

第一种

  clickMe : function(e){console.log(e);var nid=e.currentTarget.dataset.nid;var name=e.currentTarget.dataset.name;console.log(nid);console.log(name);//跳转wx.navigateTo({url: '/pages/redirct/redirct?id='+nid+"&name="+name,// url: '/pages/page2/page?id='+nid+"&name="+name,无法跳转到tabbar页面})}

可以带参数data-后面的就是参数名
在这里插入图片描述

展示用户信息

<view>当前用户名:{{name}}</view>
<view>当前头像<image src="{{pathurl}}" style="height:200rpx;width: 200rpx;"></image>
</view>
<button bindtap="bindGetUserInfo">授权登录</button>
<view bindtap="getLocalPath">位置:{{localPath}}</view>

表单提交

开关样式:

<view class="section__title">是否公开信息</view>
<switch name="isPub" />

选项样式

<view class="section__title">性别</view>
<radio-group name="sex"><label><radio value="" checked/></label><label><radio value="" /></label>
</radio-group>

总览

<form bindsubmit="formSubmit" bindreset="formReset"><view class="section section_gap"><view class="section__title">是否公开信息</view><switch name="isPub" /></view><view class="section"><view class="section__title">手机号</view><input name="phone" placeholder="手机号" /></view><view class="section"><view class="section__title">密码</view><input name="pwd" placeholder="密码" password/></view><view class="section section_gap"><view class="section__title">性别</view><radio-group name="sex"><label><radio value="" checked/></label><label><radio value="" /></label></radio-group></view><view class="btn-area"><button formType="submit">提交</button><button formType="reset">重置</button></view>
</form>
<view wx:if="{{isSubmit}}">{{warn ? warn : "是否公开信息:"+isPub+",手机号:"+phone+",密码:"+pwd+",性别:"+sex}}
</view>

键盘输入的控制

<view class="page-body"><view class="page-section"><view class="weui-cells__title">可以自动聚焦的input</view><view class="weui-cells weui-cells_after-title"><view class="weui-cell weui-cell_input"><input class="weui-input" auto-focus placeholder="将会获取焦点"/></view></view></view><view class="page-section"><view class="weui-cells__title">控制最大输入长度的input</view><view class="weui-cells weui-cells_after-title"><view class="weui-cell weui-cell_input"><input class="weui-input" maxlength="10" placeholder="最大输入长度为10" /></view></view></view><view class="page-section"><view class="weui-cells__title">实时获取输入值:{{inputValue}}</view><view class="weui-cells weui-cells_after-title"><view class="weui-cell weui-cell_input"><input class="weui-input"  maxlength="10" bindinput="bindKeyInput" placeholder="输入同步到view中"/></view></view></view><view class="page-section"><view class="weui-cells__title">控制输入的input</view><view class="weui-cells weui-cells_after-title"><view class="weui-cell weui-cell_input"><input class="weui-input"  bindinput="bindReplaceInput" placeholder="连续的两个1会变成2" /></view></view></view><view class="page-section"><view class="weui-cells__title">控制键盘的input</view><view class="weui-cells weui-cells_after-title"><view class="weui-cell weui-cell_input"><input class="weui-input"  bindinput="bindHideKeyboard" placeholder="输入123自动收起键盘" /></view></view></view><view class="page-section"><view class="weui-cells__title">数字输入的input</view><view class="weui-cells weui-cells_after-title"><view class="weui-cell weui-cell_input"><input class="weui-input" type="number" placeholder="这是一个数字输入框" /></view></view></view><view class="page-section"><view class="weui-cells__title">密码输入的input</view><view class="weui-cells weui-cells_after-title"><view class="weui-cell weui-cell_input"><input class="weui-input" password type="text" placeholder="这是一个密码输入框" /></view></view></view><view class="page-section"><view class="weui-cells__title">带小数点的input</view><view class="weui-cells weui-cells_after-title"><view class="weui-cell weui-cell_input"><input class="weui-input" type="digit" placeholder="带小数点的数字键盘"/></view></view></view><view class="page-section"><view class="weui-cells__title">身份证输入的input</view><view class="weui-cells weui-cells_after-title"><view class="weui-cell weui-cell_input"><input class="weui-input" type="idcard" placeholder="身份证输入键盘" /></view></view></view><view class="page-section"><view class="weui-cells__title">控制占位符颜色的input</view><view class="weui-cells weui-cells_after-title"><view class="weui-cell weui-cell_input"><input class="weui-input" placeholder-style="color:#F76260" placeholder="占位符字体是红色的" /></view></view></view></view>
<view>手机号:</view>
<input  bindinput="bindPhone" placeholder="请输入手机号"/>
<view>验证码:<text>点击获取验证码</text></view>
<input  bindinput="bindCode" placeholder="请输入验证码"/>
<button bindtap="login">登录</button>

js-写方法

初始数据(字典):

data: {datalist:["goods1","goods2","goods3","goods4","goods5"],userinfo:{name:"xiaoming",age:18},// imagelist:["/images/icon1.png","/images/icon2.png","/images/icon3.png","/images/icon1.png",]imagelist:"",imgs:""},

方法函数:

//自定义方法
viewimages(){
}
uploadimg:function(){
}
//默认方法
/*** 生命周期函数--监听页面加载*/onLoad(options) {},/*** 生命周期函数--监听页面初次渲染完成*/onReady() {},/*** 生命周期函数--监听页面显示*/onShow() {},/*** 生命周期函数--监听页面隐藏*/onHide() {},/*** 生命周期函数--监听页面卸载*/onUnload() {},/*** 页面相关事件处理函数--监听用户下拉动作*/onPullDownRefresh() {},/*** 页面上拉触底事件的处理函数*/onReachBottom() {},/*** 用户点击右上角分享*/onShareAppMessage() {}

存储图片到云开发平台存储

选择图片

var that=this;
wx.chooseImage({count: 1,sizeType:["original","compressed"],sourceType:["album","camera"],success:function(res){const tempFilePaths=res.tempFilePaths[0];console.log(tempFilePaths)//这里是选择的图片的临时路径that.setData({imagelist:res.tempFilePaths})//重定向//下面可以写存储到平台的具体代码},fail(res){console.log("fail"+res);},complete(res){console.log("complete"+res);}
})
//存储到平台的具体代码
wx.cloud.uploadFile({
cloudPath:'storage/pic3',filePath:tempFilePaths
})
wx.showModal({cancelColor: 'cancelColor',title:"上传成功"
})

访问服务器的request方式

pretectpic(){var that =this;wx.request({//接口url: 'http://192.168.1.107:4000/func3',//传递的内容(storage/pic3是我自己存储的图片)data: {domin:"https://(这里是自己的云开发平台的地址)/storage/pic3"},method: "POST",success: (res) => {if (res.data) {base64Data = wx.arrayBufferToBase64(wx.base64ToArrayBuffer(res.data));/// 拼接请求头,data格式可以为image/png或者image/jpeg等,看需求const base64ImgUrl = "data:image/png;base64," + base64Data;/// 刷新数据that.setData({imgs : base64ImgUrl})} }})}

获取当前用户信息

bindGetUserInfo:function(){// 获取用户信息// wx.openSetting({});var that=this;wx.getUserInfo({success:function(res){console.log(res)that.setData({name:res.userInfo.nickName,pathurl:res.userInfo.avatarUrl});},fail:function(res){console.log("失败");}})},

获取当前用户头像和名字

bindGetUserInfo:function(){
// 获取用户信息
// wx.openSetting({});
var that=this;
wx.getUserProfile({desc:"正在获取",success:function(res){console.log(res)that.setData({name:res.userInfo.nickName,pathurl:res.userInfo.avatarUrl});},fail:function(res){console.log("失败");}
})
},

选择位置

getLocalPath:function(){
var that =this;wx.chooseLocation({latitude: 0,success:function(res){console.log(res);that.setData({localPath:res.name})}})
},

在这里插入图片描述

表单提交

示例

  data: {isSubmit: false,warn: "",phone: "",pwd: "",isPub: false,sex: "男"},formSubmit: function (e) {console.log('form发生了submit事件,携带数据为:', e.detail.value);let { phone, pwd, isPub, sex } = e.detail.value;if (!phone || !pwd) {this.setData({warn: "手机号或密码为空!",isSubmit: true})return;}this.setData({warn: "",isSubmit: true,phone,pwd,isPub,sex})},

键盘输入的控制

示例

// pages/telphone/telphone.js
Page({/*** 页面的初始数据*/data: {focus: false,inputValue: "",phone:"",code:""},bindPhone:function(e){this.setData({phone:e.detail.value});console.log(this.data.phone);},bindCode:function(e){this.setData({code:e.detail.value});},login:function(){console.log(this.data.phone);console.log(this.data.code);//loginwx.request({url: 'http://192.168.1.107:4000/func1',data: {phone:this.data.phone,code:this.data.code},method: "POST",success:(result) => {console.log(result.data)},fail: (res) => {},complete: (res) => {},})},bindKeyInput: function (e) {this.setData({inputValue: e.detail.value})},bindReplaceInput: function (e) {var value = e.detail.valuevar pos = e.detail.cursorvar leftif (pos !== -1) {// 光标在中间left = e.detail.value.slice(0, pos)// 计算光标的位置pos = left.replace(/11/g, '2').length}// 直接返回对象,可以对输入进行过滤处理,同时可以控制光标的位置return {value: value.replace(/11/g, '2'),cursor: pos}// 或者直接返回字符串,光标在最后边// return value.replace(/11/g,'2'),},bindHideKeyboard: function (e) {if (e.detail.value === '123') {// 收起键盘wx.hideKeyboard()}}
})

wxss-写样式

以下示例类似的样式的结合可以做出见过的大多数界面

<view>示例1</view>
<view class="menu2"><view class="item"><image src="/images/icon1.png"></image><text>菜单</text></view><view class="item"><image src="/images/icon1.png"></image><text>菜单</text></view><view class="item"><image src="/images/icon1.png"></image><text>菜单</text></view><view class="item"><image src="/images/icon1.png"></image><text>菜单</text></view>
</view>
<view>示例2</view>
<view class="menu"><image src="/images/icon1.png"></image><image src="/images/icon1.png"></image><image src="/images/icon1.png"></image><image src="/images/icon1.png"></image>
</view>
<view>示例三</view>
<view class="auction"><view class="item"><view class="title">第一场</view><view class="tips"><view class="status">2012-01-01</view><view class="count"> 12次围观</view></view><view class="big"><image src="/images/icon2.png"></image></view><view class="small"><image src="/images/icon3.png"></image><image src="/images/icon3.png"></image><image src="/images/icon3.png"></image><image src="/images/icon3.png"></image></view></view>
</view>
.menu image,.menu2 image{width: 100rpx;height: 100rpx;border-radius: 50rpx;
}
/* .menu1{height: 1000rpx;border: 1rpx solid #ddd;display: flex;flex-direction: column;/*居中格式 flex-start/center/space-around/space-between*//* justify-content: space-around; *//* 副轴排列方式 *//* align-items: center;} */ 
.menu{display: flex;flex-direction: row;justify-content: space-around;
}
.menu2{display: flex;flex-direction: row;justify-content: space-evenly;
}
.menu2 .item{display: flex;flex-direction: column;align-items: center;
}/* .auction .item{} */
.auction .item .title{font-size: 50rpx;font-weight: 600;
}
.auction .item .tips{display: flex;flex-direction: row;justify-content: space-between;font-size: 30rpx;color: #c9c9c9;
}
.auction .item .big{height: 400rpx;overflow: hidden;
}
.auction .item .big image{width:100%;height: 100%;
}
.auction .item .small{display: flex;flex-direction: row;justify-content: flex-start;
}
.auction .item .small image{height: 100rpx;width: 100rpx;padding-right:20rpx ;
}

在这里插入图片描述


http://chatgpt.dhexx.cn/article/pld9mqXQ.shtml

相关文章

小程序-demo:小程序示例

ylbtech-小程序-demo&#xff1a;小程序示例 1.返回顶部 0、 1、app.js const openIdUrl require(./config).openIdUrlApp({onLaunch: function () {console.log(App Launch)},onShow: function () {console.log(App Show)},onHide: function () {console.log(App Hide)},glo…

Toast与Snackbar的那点事

背景 Toast是Android平台上的常用技术。从用户角度来看&#xff0c;Toast是用户与App交互最基本的提示控件&#xff1b;从开发者角度来看&#xff0c;Toast是开发过程中常用的调试手段之一。此外&#xff0c;Toast语法也非常简单&#xff0c;仅需一行代码。基于简单易用的优点…

Flutter之SnackBar原理详解

初次学习SnackBar控件&#xff0c;第一反应就是这货怎么感觉跟Android的Toast一样&#xff01;使用起来确实简单&#xff0c;但是其内部原理扒拉出来到时能学到一点东西&#xff0c;下面就细细的剖析这个组件。 Snackbar的作用就是在屏幕的底部展示一个简短的消息,与此同时&am…

Android Material Design 系列之 Snackbar 使用详解

前言 本文是 Material Design 系列第二篇&#xff1a;SnackBar 的提出实际上介于 Toast 和 Dialog 的中间产物&#xff0c;SnackBar 提供有关操作的轻量级反馈&#xff0c;它们在移动设备的屏幕底部显示一条简短消息。SnackBar 出现在屏幕上所有其他元素的上方&#xff0c;一次…

Android中Snackbar的介绍以及使用

Android中Snackbar的介绍以及使用 介绍 Snackbar可以说是Toast的升级版&#xff0c;不仅有显示信息的功能&#xff0c;还可以添加一个Action&#xff0c;实现点击功能&#xff0c;可以右滑删除。 效果图 Snackbar是Android Support Design Library库支持的一个控件&#xff0c…

安卓之SnackBar

SnackBar SnakeBar与Toast相似&#xff0c;不过SnakeBar可以与用户进行交互。 不过首先需要在app/bulid.gradle中添加一句依赖&#xff0c;操作方法如下 点击这个灯泡&#xff0c;选择Add Library dependency然后添加下面的依赖 implementation com.android.support:design:2…

使用Snackbar!——Android Snackbar花式使用指南

使用Snackbar!——Android Snackbar花式使用指南 本文是在《Design Support Library第三部分&#xff1a;Snackbar样式》和《Snackbar使用及其注意事项》两篇文章的启发下而来&#xff0c;首先对两篇文章的作者表示感谢。 Snackbar是Android Support Design Library库中的一个控…

Android 中的自定义 Snackbar

前言 Snackbars 在 Android 应用程序中很常见。几乎每个应用程序都使用 Snackbars 来显示有关应用程序中正在发生的事情的一些信息。您可以将 Snackbar 视为 Android 中 Toasts 的替代品或更好的版本。 默认情况下&#xff0c;Snackbar 显示在屏幕底部&#xff0c;它出现在屏…

Snackbar的使用

最近看到Material Design中的Snackbar&#xff0c;跟Toast很相似。似乎效果比原生的Toast好写(当然我们也可以自定义Toast成Snackbar的效果)&#xff0c;至于Snackbar特别深入的定制目前了解甚少&#xff0c;所以这里简单记录一下常用的。 效果图 下面看一下效果 这里面加了个…

Android Snackbar控件

1. Snackbar类 Snackbar是5.0版本出现的控件&#xff0c;类似于Toast&#xff0c;显示在屏幕的底部&#xff0c;包含文字信息与一个可选的操作按钮。需要添加Design依赖库&#xff0c;并且使用Theme.AppCompat主题。 2. 创建Snackbar类 Snackbar利用静态方法make()来创建实…

Android Snackbar简单解析

偶然间发现android中有Snackbar类&#xff0c;还是有点意思&#xff0c;类似于toast。与toast相比&#xff0c;最明显的区别是:Snackbar只能在屏幕底部显示。其他用法基本与toast相似。 先来张效果图吧&#xff0c;静态图&#xff1a; 大概的用法呢&#xff1f;&#xff1a; S…

android Snackbar新控件解析

Dialog和Toast&#xff0c;我们在日常的开发中一定非常熟悉&#xff0c;常常被用来作为Android应用内提示性信息的两种展示方式。然而Google在Design包中又提供了一种新的选择&#xff0c;那就是Snackbar。今天主要介绍Snackbar新控件的使用&#xff0c;以及三种提示信息展示方…

android开发之SnackBar的使用

SnackBar是一个类似于Toast的东西&#xff0c;它也有显示时长&#xff0c;但是比Toast更加灵活&#xff0c;同时&#xff0c;我们还可以给SnackBar设置点击事件&#xff0c;那么我们今天就来看看怎么用吧&#xff01; 先来一张效果图&#xff1a; 这种效果大家可能在一些App中…

Snackbar-Android M新控件

概述 查看官方API Snackbar 是 Android design support library 中的另一个组件。使用 Snackbar&#xff0c;可以在屏幕底部快速的显示一条消息&#xff0c;大体与 Toast 相同&#xff0c;但多了几分灵活性&#xff1a; 一小段时间之后、或者用户与屏幕触发交互&#xff0c;S…

Android Snackbar使用方法及小技巧-design

Snackbar和Toast相似&#xff0c;都是为了给用户提供交互信息&#xff0c;Snackbar是固定在底部的&#xff0c;显示时从下往上滑出 要使用Snackbar&#xff0c;需要在项目的build.gradle中添加依赖 dependencies {compile com.android.support:design:23.4.0 } Snackbar的使用…

Android 快别用Toast了,来试试Snackbar

&#x1f525; 应用场景 Toast提示默认显示在界面底部&#xff0c;使用Toast.setGravity()将提示显示在中间&#xff0c;如下&#xff1a; Toast toast Toast.makeText(this, str, Toast.LENGTH_SHORT);toast.setGravity(Gravity.CENTER, 0, 0);toast.show();运行在在Android …

Android---简易Snackbar

目录 Snackbar 简介 Snackbar 特性 完整Demo Snackbar 简介 Snackbar 是 Android5.0 新特性---Material Design 中的一个控件&#xff0c;用来代替 Toast。Snackbar 就是一个类似 Toast 的快速弹出消息提示的控件&#xff0c;手机上显示在底部&#xff0c;大屏幕设备显示在左…

Android Snackbar基本使用

概述 Snackbar 是 Android 5.0 新特性——Material Design 中的一个控件&#xff0c;用来代替 Toast &#xff0c;Snackbar与Toast的主要区别是&#xff1a;Snackbar可以滑动退出&#xff0c;也可以处理用户交互&#xff08;点击&#xff09;事件。 样式 使用 Snackbar需要配…

Android提醒微技巧,你真的了解Dialog、Toast和Snackbar吗?

转载请注明出处&#xff1a;http://blog.csdn.net/guolin_blog/article/details/51336415 本文同步发表于我的微信公众号&#xff0c;扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注&#xff0c;每天都有文章更新。 今天给大家带来一篇简单易懂的微技巧文章&#xff0c;并没…

Android开发——Snackbar使用详解

Snackbar是Android支持库中用于显示简单消息并且提供和用户的一个简单操作的一种弹出式提醒。当使用Snackbar时&#xff0c;提示会出现在消息最底部&#xff0c;通常含有一段信息和一个可点击的按钮。下图是Gmail中删除一封邮件时弹出的Snackbar&#xff1a; 在上图中&#xf…