用Uniapp开发鸿蒙项目 七

2025-06-24 15:26:49
109次阅读
0个评论

一、写在前面

接着之前的学习,之前应时间关系并没有实现表单功能,今天就来实现表单功能,继续基于现有的 demo1 项目折腾,记录学习过程,新手小伙伴也能跟着一步步实现~

二、实现简单表单功能

(一)需求与页面准备

在首页(index 页面)添加一个简单表单,比如包含姓名、年龄输入框和提交按钮,填写信息后点击提交,模拟数据提交(实际开发可对接接口,这里先做基础演示)。

(二)编写表单代码

打开 ​​pages/index/index.uvue​​,添加表单相关代码:

<template>
  <view class="container">
    <text>这是首页呀</text>
    <!-- 跳转按钮 -->
    <button @click="goToUserPage">去个人页面</button> 
    <!-- 表单区域 -->
    <view class="form-area">
      <view class="form-item">
        <text>姓名:</text>
        <input class="wh" type="text" placeholder="请输入姓名" v-model="formData.name" />
      </view>
      <view class="form-item">
        <text>年龄:</text>
        <input  class="wh" type="number" placeholder="请输入年龄" v-model="formData.age" />
      </view>
      <button class="submit-btn" @click="submitForm">提交</button>
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      formData: {
        name: '',
        age: ''
      }
    };
  },
  methods: {
    goToUserPage() {
      uni.navigateTo({
        url: '/pages/user/user' 
      });
    },
    submitForm() {
      if (!this.formData.name || !this.formData.age) {
        uni.showToast({
          title: '请填写完整信息',
          icon: 'none'
        });
        return;
      }
      // 这里可实际对接接口,现在先模拟提交,打印数据
      console.log('提交的表单数据:', this.formData);
      uni.showToast({
        title: '提交成功',
        icon: 'success'
      });
    }
  }
}
</script>

<style>
.container {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  height: 100vh;
}
button {
  margin-top: 20rpx;
  padding: 15rpx 30rpx;
  background-color: #007AFF;
  color: #fff;
  border-radius: 8rpx;
}
.form-area {
  width: 80%;
  margin-top: 30rpx;
}
.form-item {
  display: flex;
  flex-direction: row;

  margin-bottom: 20rpx;
}
.form-item text {
  width: 120rpx;
}
.input {
  flex: 1;
  padding: 10rpx;
  border: 1px solid #ccc;
  border-radius: 4rpx;
}
.submit-btn {
  width: 100%;
}
.wh{
	width: 50%;
}
</style>

这里用 ​​v-model​​​ 双向绑定表单数据,提交时做简单的非空校验,校验不通过用 ​​uni.showToast​​ 提示,通过的话模拟提交(打印数据并提示成功)。

页面效果:

三、遇到的问题及解决

(一)列表跳转传递数据失败

一开始在传递列表项数据时,忘记用 ​​JSON.stringify​​​ 转成字符串,导致详情页接收不到正确数据。后来加上转换,并且在详情页用 ​​JSON.parse​​ 解析,就解决了问题。所以传递复杂数据(对象、数组等)时,一定要做好序列化和反序列化处理。

(二)表单输入框样式不统一

编写表单样式时,输入框的边框、内边距等样式没设置好,导致页面看起来很凌乱。通过给 ​​input​​​ 统一设置 ​​border​​​、​​padding​​ 等样式,让表单外观更规整。做样式调整时,要多调试,保证不同设备上显示效果一致。

四、总结

今天给项目添加了一个重要功能,完成了简单表单的搭建,包含输入、校验和模拟提交。这些功能都是实际开发中经常用到的,虽然实现起来不算复杂,但把它们整合到项目里,能让项目更完整。后续打算给表单对接真实接口,继续丰富项目。学习就是这样一步步积累,把每个小功能吃透,慢慢就能开发出更复杂的应用啦,继续加油~ 

##Uniapp##三方框架##商务##

收藏00

登录 后评论。没有帐号? 注册 一个。