【微信小程序独立开发 3】个人资料页面编写

 这一节完成用户个人信息昵称的填写和获取

上节编写完成后的页面如下所示:

首先进行用户昵称编辑功能的编写,铲屎官昵称采用了navigator标签,当点击昵称时会自动跳转到昵称编辑页面。

首先输入昵称编辑界面的导航栏名称

{
  "usingComponents": {},
  "navigationBarTitleText": "编辑昵称"
}

基本页面编写

<!--pages/editNickName/editNickName.wxml-->
<view class="edit_nickName_wrap">
    <view class="edit_nickName">
        <input type="text" value="{{nickName}}" placeholder="请输入昵称" bindinput="limitWord"/>
    </view>
    <view class="str_count_wrap">
        <view class="str_count">
            {{count}}/10
        </view>
    </view>
    <view class="tip">昵称支持输入1-10个字,可输入特殊符号,不可与其他用户重复。</view>
    <view class="save_button">
        <button >保存</button>
    </view>
</view>

当在个人信息页面点击昵称时,跳转昵称编辑页面需要携带一个当前昵称的参数

 并在editNickname页面进行接收,当页面加载时初始化并赋值给页面参数,使用count来获取当前输入框的字符个数,限制输入不超过10个

给输入框编写方法监听当前输入框的字符个数,并修改当前count值

limitWord(e){
    var value = e.detail.value;
    var wordLength = parseInt(value.length); //解析字符串长度转换成整数。
    if (10 < wordLength) {
      return;
    }
    this.setData({
        nickName: value,
        count: wordLength
    });
  },

 编写less样式

/* pages/editNickName/editNickName.wxss */
page{
    background-color: #f5f5ed;
}
.edit_nickName_wrap{
    height: 100vh;
    .edit_nickName{

        height: 120rpx;
        input{
            font-size: 24rpx;
            padding-left: 20rpx;
            margin: 50rpx 50rpx 0rpx 50rpx;
            border-radius: 20rpx;
            height: 100rpx;
            background-color: #fff;
        }
    }
    .str_count_wrap{  
        display: flex;
        justify-content: flex-end;
        .str_count{
            margin-right: 50rpx;
            font-size: 24rpx;
            color: #666;
            
        }
    }
    .tip{
        margin: 20rpx 50rpx 20rpx 50rpx;
        font-size: 24rpx;
        color: #666;
    }
    .save_button{
        position: relative;
        button{
            position: fixed;
            left: 0;
            right: 0;
            bottom: 120rpx;
            font-weight: 500;
            font-size: 28rpx;
            width: 260rpx;
            border-radius: 30rpx;
           background-color: #fee05a;
        }
    }
}

此时的页面样式如下:

在输入框的右侧添加重置按钮来提高用户体验,图标采用iconfont进行导入 

引入iconfont矢量图标

iconfont-阿里巴巴矢量图标库  

 在小程序平台和pages同级创建文件夹styles,并创建文件iconfont.wxss,将生成的代码复制进去

 

 在app.wxss中引入iconfont.wxss让其全局生效

/**app.wxss**/
@import "./styles/iconfont.wxss"

 使用时class选择器需要选取两个类名选择器,后面为所需的图标

 

 此时页面样式为:

 使用block标签包裹重置图标,当input中字符数为0时隐藏图标

 为图标绑定事件

 clearInput(){
      this.setData({
          count: 0,
          nickName: ''
      })
  },

注意:因为图标采用相对定位,实际位置在input层级之下,如果不设置层级的话点击事件不生效,设置z-index来使重置图标位于input之上

设置获取微信用户昵称在输入法中

 将昵称保存在全局变量中,在app.js定义全局变量

// app.js
App({
  onLaunch() {
   
   
  },
  globalData: {
    userInfo: {
        avatarUrl: 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0',
        nickName: '铲屎官',
        userId: '001'
    }
  }
})

为保存按钮绑定方法

sendNickName(){
      app.globalData.userInfo.nickName = this.data.nickName;
      wx.navigateTo({
        url: '/pages/userInfo/userInfo',
      })
  },

修改userInfo.js文件

// pages/userInfo/userInfo.js
const app = getApp()
Page({

  /**
   * 页面的初始数据
   */
  data: {
    userInfo: {
        nickName: '',
        avatarUrl: '',
        userId: ''
    }
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
     this.setData({
         userInfo: {
             nickName: app.globalData.userInfo.nickName,
             avatarUrl: app.globalData.userInfo.avatarUrl,
             userId: app.globalData.userInfo.userId
         }
     })
  },

注意:如果微信昵称为特殊符号如表情,需要在真机调试下查看效果

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

On the Robustness of Backdoor-based Watermarkingin Deep Neural Networks

关于深度神经网络中基于后门的数字水印的鲁棒性 ABSTRACT 在过去的几年中&#xff0c;数字水印算法已被引入&#xff0c;用于保护深度学习模型免受未经授权的重新分发。我们调查了最新深度神经网络水印方案的鲁棒性和可靠性。我们专注于基于后门的水印技术&#xff0c;并提出了…

CHS_04.2.1.5+进程通信

CHS_04.2.1.5进程通信 进程通信为什么进程通信需要操作系统支持&#xff1f;共享存储消息传递消息传递&#xff08;间接通信方式&#xff09;进程通信——管道通信 知识回顾与重要考点 进程通信 在这个小节中 我们会学习进程间通信的几种方式 分别是共享 存储 消息传递 还要管道…

软件测试|Selenium 元素不可交互异常ElementNotInteractableException问题分析与解决

简介 在使用 Selenium 进行 Web 自动化测试时&#xff0c;我们可能会遇到各种异常情况。其中之一就是 ElementNotInteractableException 异常&#xff0c;这通常意味着在尝试与页面元素交互时出现了问题。本文将详细介绍这个异常的原因、可能的解决方法&#xff0c;并提供示例…

Git仓库管理笔记

问题&#xff1a; hint: the same ref. If you want to integrate the remote changes, use Done 解决&#xff1a; 解决方法&#xff1a; 1、先使用pull命令&#xff1a; git pull --rebase origin master 2、再使用push命令&#xff1a; git push -u origin master

银行网络安全实战对抗体系建设实践

文章目录 前言一、传统攻防演练面临的瓶颈与挑战&#xff08;一&#xff09;银行成熟的网络安全防护体系1、缺少金融特色的演练场景设计2、资产测绘手段与防护体系不适配3、效果评价体系缺少演练过程维度相关指标 二、实战对抗体系建设的创新实践&#xff08;一&#xff09;建立…

【RTOS】快速体验FreeRTOS所有常用API(4)队列

目录 四、队列2.1 概念2.2 创建队列2.3 写队列2.4 读队列2.5 队列集&#xff08;可跳过&#xff09; 四、队列 该部分在上份代码基础上修改得来&#xff0c;代码下载链接&#xff1a; https://wwzr.lanzout.com/iBNAS1l75bvc 密码:7xy2 该代码尽量做到最简&#xff0c;不添加多…

解决Qt的release构建下无法进入断点调试的问题

在工作的时候遇到了第三方库只提供release版本的库的情况&#xff0c;我需要在这基础上封装一层自家库&#xff0c;在调试的时候遇到如下问题&#xff0c;但是在Qt环境下&#xff0c;release的库只能在进行release构建和调试。 卡在了一直进不了断点的情况。提示内容如下&#…

【IPC通信--共享内存】

进程间通信目的 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程 资源共享&#xff1a;多个进程之间共享同样的资源。 通知事件&#xff1a;一个进程需要向另一个或一组进程发送消息&#xff0c;通知它&#xff08;它们&#xff09;发生了某种事件&#xff08;如…

Linux操作系统——文件详解

1.文件理解预备知识 首先&#xff0c;当我们在磁盘创建一个空文件时&#xff0c;这个文件会不会占据磁盘空间呢&#xff1f; 答案是当然会占据磁盘空间了&#xff0c;因为文件是空的&#xff0c;仅仅指的是它的内容是空的&#xff0c;但是该文件要有对应的文件名&#xff0c;…

【数据库和表的管理】

数据库和表的管理 一、实验目的 了解MySQL数据库的逻辑结构和物理结构的特点。学会使用SQL语句创建、选择、删除数据库。学会使用SQL语句创建、修改、删除表。学会使用SQL语句对表进行插入、修改和删除数据操作。了解MySQL的常用数据类型。 二、实验内容SQL语句创建、选择、删…

玩转硬件之MP3的破解

MP3播放器是一种能播放音乐文件的播放器&#xff0c;主要由存储器&#xff08;存储卡&#xff09;、显示器&#xff08;LCD显示屏&#xff09;、中央处理器MCU&#xff08;微控制器&#xff09;或解码DSP&#xff08;数字信号处理器&#xff09; 等组成。 其中微控制器是播放器…

k8s存储卷之动态

动态pv需要两个组件 1、卷插件&#xff0c;k8s本身支持的动态pv创建不包含NFS&#xff0c;需要声明和安装一个外部插件 Provisioner 存储分配器&#xff0c;动态创建pv&#xff0c;然后根据pvc的请求自动绑定和使用 2、StorageClass&#xff0c;用来定义pv的属性&#xff0c…

金蝶云星空单据转换插件-选单

文章目录 金蝶云星空单据转换插件-选单 金蝶云星空单据转换插件-选单 选单使用标识报错 应该使用实体属性

LeetCode 每日一题 Day 44 || 哑节点去重

82. 删除排序链表中的重复元素 II 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,3,4,4,5] 输出&#xff1a;[1,2,5] 示例 2&#x…

内存泄漏问题

内存泄漏是一种常见的问题&#xff0c;它可能导致系统内存不断增加&#xff0c;最终耗尽可用内存。解决内存泄漏问题通常需要进行调试和分析。下面是一些可能有助于解决内存泄漏问题的步骤&#xff1a; 1. 监控内存使用情况&#xff1a; a. 使用 malloc 记录日志&#xff1a;…

MyBatisPlus学习笔记二

接上&#xff1a;MyBatisPlus学习笔记一&#xff1a; MyBatisPlus学习笔记一-CSDN博客 1、条件构造器 MyBatisPlus支持各种复杂的where条件&#xff0c;可以满足日常开发的所有需求。 1.1、集成体系 1.2、实例 查询 lambda查询 更新 1.3、总结 2、自定义sql 我们可以利用MyB…

Rust-NLL(Non-Lexical-Lifetime)

Rust防范“内存不安全”代码的原则极其清晰明了。 如果你对同一块内存存在多个引用&#xff0c;就不要试图对这块内存做修改&#xff1b;如果你需要对一块内存做修改&#xff0c;就不要同时保留多个引用。 只要保证了这个原则&#xff0c;我们就可以保证内存安全。 它在实践…

入门Docker1: 容器技术的基础

目录 服务器选型 虚拟机 基于主机(物理机或虚机)的多服务实例 基于容器的服务实例 Docker Docker三要素 Docker安装 Docker基本使用 基本操作 仓库镜像 容器 服务器选型 在选择服务器操作系统时&#xff0c; Windows 附带了许多您需要付费的功能。 Linux 是开放源代…

光K8S的目录结构就够你学一天!

Kubernetes Project Layout设计 Kubernetes项目由Go语言编写。Go语言官方对项目的结构设计没有强制要求&#xff0c;早期的Go语言开发者都喜欢将包文件代码放置在项目的src/目录下&#xff0c;如nsqio开源项目&#xff0c;开发者喜欢将入口文件放入apps/目录。不同开发者的喜好…

使用WAF防御网络上的隐蔽威胁之CSRF攻击

在网络安全领域&#xff0c;除了常见的XSS&#xff08;跨站脚本&#xff09;攻击外&#xff0c;CSRF&#xff08;跨站请求伪造&#xff09;攻击也是一种常见且危险的威胁。这种攻击利用用户已经验证的身份在没有用户知情的情况下&#xff0c;执行非授权的操作。了解CSRF攻击的机…