微信小程序学习实录11:精通表单数据绑定,构建高效用户界面

微信小程序中的表单数据绑定是一种非常实用的功能,它允许开发者将页面上的表单元素与数据进行关联,从而实现数据的双向绑定。这样做的好处是能够简化代码,提高开发效率,并且让数据管理变得更加直观。
在这里插入图片描述

一、基本概念

  • 数据绑定:在微信小程序中,通过{{}}语法可以在WXML文件(类似于HTML)中插入JavaScript变量和表达式。
  • 事件处理:通过在组件上定义事件处理器,可以监听用户操作,如点击、输入等,并执行相应的逻辑来更新数据。
  • 双向绑定:虽然微信小程序本身不直接支持双向数据绑定,但可以通过结合使用<input>标签的value属性和bindinput事件来模拟实现。

二、数据绑定示例

(一)采用一个对象数组的绑定事件

1.wxml
  1. .json配置文件中无需特别设置,保持默认即可。
  2. .wxml文件中创建表单:
<page-meta root-font-size="system"/>
<view class="page">
	<view class="weui-form">
		<view class="weui-form__text-area">
			<h2 class="weui-form__title">数据双向绑定</h2>
			<view class="weui-form__desc">漏刻有时信息维护页,实现数据双向绑定。</view>
		</view>
		<view class="weui-form__control-area">
			<view class="weui-cells__group weui-cells__group_form">
				<view class="weui-cells__title">基础信息</view>
				<view class="weui-cells">
					<view class="weui-cell weui-cell_active">
						<view class="weui-cell__hd"><label class="weui-label">职务</label></view>
						<view class="weui-cell__bd">
							<input class="weui-input" placeholder="填写职务信息" bindinput="bindKeyInput" data-params ="user_title" placeholder-class="weui-input__placeholder" />
						</view>
					</view>
					<view class="weui-cell weui-cell_active">
						<view class="weui-cell__hd">
                            <label class="weui-label">姓名</label>
                        </view>
						<view class="weui-cell__bd">
							<input class="weui-input" placeholder="填写本人的姓名" bindinput="bindKeyInput" data-params ="user_name" placeholder-class="weui-input__placeholder" />
						</view>
					</view>
					<view class="weui-cell weui-cell_active">
						<view class="weui-cell__hd">
                            <label class="weui-label">联系电话</label>
                            <view class="weui-cell__desc">手机号</view>
                        </view>
						<view class="weui-cell__bd">
							<input class="weui-input" placeholder="填写绑定的电话号码" bindinput="bindKeyInput" data-params ="user_phone" type="number" placeholder-class="weui-input__placeholder" />
						</view>
					</view>
				</view>
			</view>
		</view>

        <label class="weui-agree" aria-role="">
            <checkbox class="weui-agree__checkbox-check" aria-labelledby="js_agree_txt js_agree_link"/>
            <i class="weui-agree__checkbox"></i>
            <span class="weui-agree__text"><text aria-hidden="true" id="js_agree_txt">阅读并同意</text><navigator url="../agreement/agreement" class="weui-agree__link">《用户协议》</navigator><navigator url="../policy/policy" class="weui-agree__link">《隐私政策》</navigator></span>
        </label>
		<view class="weui-form__tips-area">
			<view class="weui-form__tips" wx:if="{{baseInfo.user_title != null}}">
                当前信息:{{baseInfo.user_name}} - {{baseInfo.user_phone}}
			</view>
		</view>
        
		<view class="weui-form__opr-area">
			<text aria-role="button" class="weui-btn weui-btn_primary" bindtap="backHome">返回首页</text>
		</view>
		<view class="weui-form__tips-area">
			<view class="weui-form__tips">
			</view>
		</view>
		<view class="weui-form__extra-area">
			<view class="weui-footer">
				<view class="weui-footer__links">
					<navigator url="javascript:" class="weui-footer__link">漏刻有时</navigator>
				</view>
				<view class="weui-footer__text">Copyright © 2023 lockdata</view>
			</view>
		</view>
	</view>
</view>
2.js
Page({

    /**
     * 页面的初始数据
     */
    data: {
        baseInfo: {}
    },

    bindKeyInput(e) {
        this.data.baseInfo[`${e.currentTarget.dataset.params}`] = e.detail.value
        this.setData({
            baseInfo: this.data.baseInfo
        })
        console.log(`baseInfo对象:`, this.data.baseInfo)
    },
    backHome() {
        wx.navigateTo({
            url: '../index/index',
        })
    }
})

(二)采用多个的绑定事件

1.wxml
<view class="container">
  <form bindsubmit="formSubmit">
    <view class="input-group">
      <label>用户名</label>
      <input name="username" value="{{username}}" bindinput="onUsernameInput" placeholder="请输入用户名"/>
    </view>
    <view class="input-group">
      <label>密码</label>
      <input name="password" type="password" value="{{password}}" bindinput="onPasswordInput" placeholder="请输入密码"/>
    </view>
    <button formType="submit">提交</button>
  </form>
</view>
2.js
Page({
  data: {
    username: '',
    password: ''
  },
  onUsernameInput: function(e) {
    this.setData({
      username: e.detail.value
    });
  },
  onPasswordInput: function(e) {
    this.setData({
      password: e.detail.value
    });
  },
  formSubmit: function(e) {
    console.log('表单提交', e.detail.value);
    // 这里可以添加提交表单后的处理逻辑
  }
});

三、注意事项

  • 确保你的数据模型与表单控件之间有正确的映射关系。
  • 使用setData()方法来改变状态或数据,以触发视图更新。
  • 对于复杂的表单场景,可能需要更精细的状态管理和验证逻辑。

@漏刻有时

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

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

相关文章

Spring Cloud +UniApp智慧工地源码,智慧工地综合解决方案,建筑工程云平台源码

Spring Cloud UniApp智慧工地源码&#xff0c;智慧工地全套源代码包含&#xff1a;PC端大屏端移动端 智慧工地解决方案以工程建设现场管理需求为主线&#xff0c;以AI、物联网、BIM技术为手段&#xff0c;对施工现场进行立体化、全方位、全时段管理&#xff0c;实现规范施工管…

解决VMware虚拟机的字体过小问题

前言&#xff1a; &#xff08;1&#xff09;先装VMware VMware17Pro虚拟机安装教程(超详细)-CSDN博客 &#xff08;2&#xff09;通过清华等镜像网站安装好Ubuntu镜像&#xff0c;下面贴上链接 教程虚拟机配置我没有做&#xff0c;因为学校给了现成的虚拟机~~大家需要的自己…

数据结构之单链表——考研笔记

文章目录 一.单链表定义1.什么是单链表2.代码实现3.不带头结点的单链表4.带头结点的单链表 二.单链表插入删除1.按位序插入&#xff08;带头结点&#xff09;2.插入时不带头节点3.指定节点的后插操作4.指定节点的前插操作5.按位序删除&#xff08;带头结点&#xff09;6.删除指…

2024年【北京市安全员-A证】找解析及北京市安全员-A证考试试卷

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 北京市安全员-A证找解析考前必练&#xff01;安全生产模拟考试一点通每个月更新北京市安全员-A证考试试卷题目及答案&#xff01;多做几遍&#xff0c;其实通过北京市安全员-A证证考试很简单。 1、【多选题】《中华人…

保姆级教程 | 全流程免费:合并多份长宽不同的PDF成相同大小并进行瘦身

背景 由于老板需要&#xff0c;完成不同PDF文件&#xff08;a&#xff0c;b&#xff0c;c....&#xff09;合并&#xff0c;同时要求主文件&#xff08;A&#xff09;小于6M。合并过程中发现各个PDF大小&#xff08;长宽&#xff09;并不相同&#xff0c;造成合并后效果不好也…

网站安全问题都有哪些,分别详细说明

网站安全问题涉及多个方面&#xff0c;以下是一些常见的网站安全问题及其详细说明&#xff1a; 数据泄露 问题描述&#xff1a;数据泄露是指网站存储的用户敏感信息&#xff08;如用户名、密码、信用卡信息等&#xff09;被非法获取。黑客可能通过SQL注入、XSS攻击等手段窃取这…

Unity编辑器界面及其基础功能介绍

文章目录 Unity编辑器界面编辑器默认界面布局打开和关闭编辑界面自定义界面布局Unity资源商店Unity Assets Store什么是资源商店&#xff1f;资源商店中包含哪些东西&#xff1f;如何进行素材导入&#xff1f;Unity官网购买素材或插件导入方法非官网素材导入非官网插件导入 Sce…

【WRF数据准备】基于GEE下载静态地理数据-叶面积指数LAI及绿色植被率Fpar

【WRF数据准备】基于GEE下载静态地理数据 准备:WRF所需静态地理数据(Static geographical data)数据范围说明基于GEE下载叶面积指数及绿色植被率GEE数据集介绍数据下载:LAI(叶面积指数)和Fpar(绿色植被率)数据处理:基于Python处理为单波段LAI数据参考GEE的介绍可参见另…

基于Django+python的酒店客房入侵检测系统设计与实现

项目运行 需要先安装Python的相关依赖&#xff1a;pymysql&#xff0c;Django3.2.8&#xff0c;pillow 使用pip install 安装 第一步&#xff1a;创建数据库 第二步&#xff1a;执行SQL语句&#xff0c;.sql文件&#xff0c;运行该文件中的SQL语句 第三步&#xff1a;修改源…

Spring beanFactoryPostProcessor

项目结构和代码 Component public class CustomerBeanFactoryPostProcessor implements BeanFactoryPostProcessor {Overridepublic void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException {System.out.printl…

基于Spring Boot的宿舍管理系统设计与实现(源码+定制+开发)宿舍信息管理平台、智能宿舍系统开发、学生宿舍管理平台设计、宿舍入住与信息管理

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

华为:高级ACL 特定ip访问特定ip命令

网络拓扑图&#xff1a; 网络环境&#xff1a; 全网互通即可 1.创建一个名为test的高级ACL acl name test advance 2.添加规则 ##拒绝所有ip访问 rule 10 deny ip source any destination 192.168.1.10 0.0.0.0 只允许特定ip访问特定ip rule 5 permit ip source 192.168.2.10…

C++与现代开发实践第三节:多线程与并发编程

第四章&#xff1a;C与现代开发实践 第三节&#xff1a;多线程与并发编程 在这一课中&#xff0c;我们将详细探讨多线程与并发编程的各个方面&#xff0c;特别是从线程的创建、管理到高级的优化技术&#xff0c;并且通过复杂的实战案例来展示如何应对并发问题。最后&#xff…

并联 高电压、高电流 放大器实现 2 倍输出电流模块±2A

1.1 并联输出电路设计注意事项 直接对两个功率运算放大器的输出进行硬接线并不是一种好的电气做法。如果两个运算放大器的输出直接连接在一起&#xff0c;则可能会导致不均匀的电流共享。这是因为其中的每个运算放大器都尝试强制施加略微不同的 Vout 电压&#xff0c;该电压取决…

【HarmonyOS NEXT】使用 Navigation 对折叠屏设备页面进行分栏展示,优化 UI 交互

关键词&#xff1a;折叠屏、navigation、router、路由、分栏、UI 随着科技的发展&#xff0c;手机设备形态也由一面屏向多面屏进行发展&#xff0c;那么软件的UI适配也面临着问题&#xff0c;本篇文章主要解决大屏设备的页面 UI 适配问题&#xff0c;如折叠屏&#xff0c;平板&…

Spring Boot 3项目创建与示例(Web+JPA)

以下是一个Spring Boot 3.3.4整合JPA的示例,它展示了如何在Spring Boot应用程序中使用JPA进行数据持久化。 版本与环境 Spring Boot 3.3.4数据库: MySQL 8.0.40, MySQL的安装使用可以参考: MySQL 8 下载与安装攻略JDK 17Maven 3.6项目创建 可以使用Spring Initializr 初始…

一家生物技术企业终止,科创属性可能不足,报告期内专利数猛增

轩凯生物九成以上营业收入来源于植物营养领域&#xff0c;收入来源结构单一&#xff0c;产品下游应用领域较为集中。报告期内公司应收账款账面价值逐年上升&#xff0c;回款比例显著低于前两年&#xff0c;遭交易所问询是否存在较大的坏账风险。 轩凯生物核心技术是否成熟以及是…

ssm智慧社区电子商务系统+vue

系统包含&#xff1a;源码论文 所用技术&#xff1a;SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习&#xff0c;获取源码请私聊我 需要定制请私聊 目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 [2 系统…

Java面向对象编程进阶(四)

Java面向对象编程进阶&#xff08;四&#xff09; 一、equals()方法的使用二、toString()方法的使用三、复习 一、equals()方法的使用 适用性&#xff1a;任何引用数据都可以使用。 自定义的类在没有重写Object中equals()方法的情况下&#xff0c;调用的就是Object类中声明的…

C++初阶教程——C++入门

一、本章主要内容 C在C的基础之上&#xff0c;加入了面向对象编程的思想&#xff0c;并增加了许多有用的库以及编程范式。可以说&#xff0c;C是C的子集。在这章的内容中&#xff0c;笔者将会为诸位读者讲C如何补充C语言的一些不足。比如&#xff1a;作用域、IO、函数、指针等。…