首页 > 编程语言 >7天入门小程序开发 | 05-表单处理让小程序动起来,自带组件让页面更丰富

7天入门小程序开发 | 05-表单处理让小程序动起来,自带组件让页面更丰富

时间:2022-12-26 14:34:34浏览次数:74  
标签:05 数据库 程序开发 程序 表单 wx data 页面

        在前面的课程中已经能够对数据库插入静态数据并且进行查询,可实际上小程序中需要用户自己编辑和插入数据,那么今天我们来学习下小程序的表单部分,并且还会在最后扩展介绍下小程序自带的组件,能够填充页面样式,有更好的体验。

1. 小程序表单

        新增信息,比如“小程序开发课程”中新增加一节课,需要有个新增信息的页面,并在JS中将数据保存到数据库。

        我们先看下表单中的内容,除了页面标题,主要信息是三个input输入框和一个下拉选择框,最后是提交按钮。

<!--pages/learning/create.wxml-->
<view class="page-title">
添加信息
</view>


<view class="create-body">
<view class="content">
<input type="text" name="courseID" class="input" placeholder="课程序号" bindinput="bindInputCourseID"/>
<input type="text" name="title" class="input" placeholder="标题" bindinput="bindInputTitle"/>
<input type="text" name="link" class="input" placeholder="课程链接" bindinput="bindInputLink" />
</view>
<view class="select">
<picker bindchange="bindChange" value="{{statusIndex}}" range="{{statusValue}}">
<view class="picker">
课程状态:{{statusValue[statusIndex]}}
</view>
</picker>
</view>


<button class="submit" type="primary" bindtap="submitForm">提交</button>
</view>


对应的create.wxss文件如下:

/* pages/learning/create.wxss */


.create-body {
width: 90%;
margin: 40px auto;
}


.page-title {
font-size: 20px;
color: #FFFFFF;
padding: 20px 4% 40px 4%;
width: 92%;
background-color:coral;
}


.input, .select {
border: 1px solid #CCCCCC;
margin: 10px ;
padding: 4px 8px;
font-size: 14px;
color: #FF8800;
}

2. 小表单前后端绑定

        在小程序JS文件中先定义数据格式,我们先看前面三个字段,分别是课程编号、课程名称、课程链接。

<!-- pages/learning/create.js -->
data: {
courseID: "",
title: "",
link:""
},

        前端页面编辑修改数据后,需要在JS中及时获取变化,就是通过bindinput来进行绑定,三个字段我们分开绑定了不同的函数,比如bindInputCourseID来监听课程编号的修改,并且保存到上面的data中。读取data中的数据可以使用this.data.courseID,设置data中的数据可以用this.setData()来处理。

<!-- pages/learning/create.js -->
bindInputCourseID: function (e) {
this.setData({
courseID: e.detail.value
})
},


bindInputTitle: function (e) {
console.log(e.detail.value);
this.setData({
title: e.detail.value
})
},


bindInputLink: function (e) {
this.setData({
link: e.detail.value
})
},

        还有第四个字段是下拉框的选择,我们先不看多级下拉框,只看一级的,也就是只有一列数据。先在data中定义可选值,使用statusValue: ["已上线","未上线","已下线"]来定义。除此之外,我们还要记录当前用户的选择是哪个值,使用statusIndex来记录,默认值就是下面代码中的0,第0个元素,对应“已上线”(如何对应在后面介绍)。

<!-- pages/learning/create.js -->
data: {
statusValue: ["已上线","未上线","已下线"],
statusIndex: 0
},

下拉框前端页面变更也需要JS后端及时获取感知,将选取的序号值保存到statusIndex中。

<!-- pages/learning/create.js -->
bindChange(e) {
this.setData({
statusIndex: e.detail.value
})
},

3. 添加到数据库并进行查询

        在create.wxml页面中有“提交”的按钮,和后端create.js进行关联的是其中的bindtap="submitForm"。

        在JS中初始化数据库实例,添加数据的语法和之前一样,不过这里添加的数据不再是之前静态的,变成了前端页面中的动态数据,也就是用户编辑填写了哪些信息就会提交哪些数据。

        注意,课程状态是下拉框选择项,在这里提交到数据库的可以是statusIndex,只是一个对应数字,在显示的时候从this.data.statusValue[this.data.statusIndex]进行获取。下面代码中是直接存储的值,也就是“已上线”、“未上线”、“已下线”中的一个。

        数据提交完成后,通过wx.showToast给前端进行提示。(注意,这里并没有根据去检查数据库提交是否成功,直接给前端返回了操作成功的提示。)

submitForm() {
wx.cloud.init();
const db = wx.cloud.database();


db.collection('learning').add({
data: {
"id": this.data.courseID,
"title": this.data.title,
"link": this.data.link,
"status": this.data.statusValue[this.data.statusIndex]
}
});


wx.showToast({
title: '操作成功',
icon: 'success'
})
},

        添加成功后再去云开发-数据库控制台查看最新的数据库记录,可以看到刚刚添加的数据。是否还记得在index.js中查询数据库的操作,回顾下之前的代码:

getCourseList: function () {
wx.cloud.init();
const db = wx.cloud.database();


var that = this;
db.collection('learning').orderBy("id","asc").get({
success: function(res) {
// res.data 包含该记录的数据
console.log(res)
that.setData({
courseList: res.data
});
}
});
},

        查询到数据后在index.wxml中通过wx:for来循环输出,这个和之前是一样的。现在已经可以实现用户动态添加数据、保存到数据库,并且能够动态显示真实数据了。


4. 扩展

7天入门小程序开发 | 05-表单处理让小程序动起来,自带组件让页面更丰富_表单

        在小程序添加信息表单页面,使用了小程序自带的picker组件,能够比较方便地展示下拉框,当然还有多级下拉框,用来展示全国省市、城市等数据。

        还有更多其他常用的小程序自带组件,一起来使用吧。

5. 作业

本次作业也同样是动手完成几个操作,提交结果截图和代码截图吧。

  • 小程序表单提交界面截图
  • 小程序表单WXML代码文件截图
  • 小程序数据绑定和表单的JS代码文件截图
  • 数据库新增数据截图,或者显示数据库数据的index.wxml展示的界面截图




回顾7天入门小程序开发系列文章

​7天入门小程序开发 | 小程序版Hello World​

​7天入门小程序开发 | 02-小程序页面内容填充​

​7天入门小程序开发 | 03-小程序JS前后端交互​

​7天入门小程序开发 | 04-使用云开发中云存储和数据库​

标签:05,数据库,程序开发,程序,表单,wx,data,页面
From: https://blog.51cto.com/u_15651456/5968898

相关文章

  • 7天入门小程序开发 | 小程序版Hello World
            这里面向初学者整理快速掌握小程序开发入门的教程,阅读教程、完成相应的开发任务,相信7天之后肯定有另一番感悟和收获。    第一节课就是熟悉官方文......
  • 7天入门小程序开发 | 02-小程序页面内容填充
            作为第二节课,在今天的课程中我们主要介绍小程序的几块内容:表格WXSS使用页面跳转图片展示        再我们新建了一个模块learning,包含以下两个页面。......
  • bootstrap表单
    内联表单:   <formclass="rowg-3"role="form"><divclass="col-md-2">......
  • 【Vue.js入门到实战教程】14-基于 Laravel Jetstream 的Vue 技术栈编写表单组件
    Laravel8引入Jetstream作为前端UI库在本月8号,Laravel8.0正式发布,随后Vue3.0 也正式发布,不过围绕Vue3生态的很多库还处于beta阶段,所以目前学院君这里的Vu......
  • CMU15-445:Lecture #05 笔记
    Lecture#5:StorageModels&Compression本文是对CMU15-445课程第5节笔记的一个粗略总结和翻译。仅供个人(M1kanN)复习使用。本节课介绍了数据库压缩操作,这个知识点......
  • 小程序开发中问题
    微信开发者工具更改默认的用户存储目录问题描述:用户数据存放在C:\Users\lenovo\AppData\Local\微信开发者工具\UserData目录下,占据C盘空间。解决方案:将上述的UserDa......
  • Windows环境下最新OpenCV和Contribute代码的联合编译【20190505更新红字】
    目的在于获得并使用最新的完全版本的代码,主要方法是对CMake能够熟练使用,并且对编译等基础支持有所了解。因为这篇博客经过多次修改,所以里面的内容和配图可能有不是完......
  • CF465B Inbox (100500) 题解
    题目传送门题目大意有已读或未读的邮件,可以进行以下操作:读完邮件后回到邮件列表;回到列表后选取任意一个未读邮件读;读完一个邮件之后读这个邮件的下一个或者上一个邮......
  • django中只使用ModleForm的表单验证,而不使用ModleForm来渲染
    主题众所周知,django.forms极其强大,不少的框架也借鉴了这个模式,如Scrapy。在表单验证时,django.forms是一绝,也是面向对象的经典表现。但要用它来渲染表单那就不好玩了,除非写......
  • 天梯赛练习题L2(001-005)
    L2-001紧急救援#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;typedefpair<LL,LL>PII;constLLMAXN=1e18;constLLN=2002,M=520;LLn,m,s......