【小程序】小程序组件-1

news2024/9/21 22:03:30

一. form组件的使用

这个点自己写的时候卡了好久,比较有感悟。

首先明确一点,为什么需要form。

form可以封装一个模块,这个模块里可以有多个input操作,多个输出接口,多个按键,但是至多有两个关键按键:submit和reset

submit执行提交之后对整个模块进行操作的函数。对应的buttom的form-type="submit"

reset执行对整个模块进行复位的函数。对应的buttom的form-type="reset"

(其实只是起名这么起而已,真的函数怎么样,其实随你)

刚刚提到了多个input操作,有个问题,e.detail.value获得的是整个触发函数对应的模块里输入的全部内容,那么怎么分清哪个是哪个input输入的呢。

答案是给input起名字,比如name="cels",获取它输入的值可以变为e.detail.value.cels

<view class="box">
  <view>
    <form bindsubmit="changeM" bindreset="">
      <input name="cels" type="digit" placeholder="请输入人民币金额" auto-focus="true" />
      <view class="layout">
        <button type="primary" form-type="submit">提交</button>
        <button type="warn" form-type="reset">复原</button>
      </view>
      <view>
        {{dollar}}
      </view>
    </form>

  </view>

</view>
const app=getApp()
var C;
Page({

  /**
   * 页面的初始数据
   */
  data: {
    
  },
  changeM:function(e){
    C=parseInt(e.detail.value.cels);
    this.setData({
      dollar:(C/6.08).toFixed(4)
    })
  }
})

二. 看一个实例

做一个小程序,要求用户输入三角形三条边的长度,当能构成三角形时显示三角形的周长,不能构成则显示提示“三角形两边之和需要大于第三边”。

显示提示不是指自己输在屏幕上的文本,是那种提交成功样式的灰框框,引进一个新组件,this.showToast({

        title:' '

}) title里就是你想显示在灰框框中的东西。

<view class="box">
  <form bindsubmit="changeM">
    <input name="cel1" type="digit" placeholder="请输入第一条边的边长"/>
    <input name="cel2" type="digit" placeholder="请输入第二条边的边长"/>
    <input name="cel3" type="digit" placeholder="请输入第三条边的边长"/>
    <button form-type="submit" type="primary">提交</button>
    <view>
      三角形周长为:{{perimeter}}
    </view>
  </form>
</view>
// logs.js
const util = require('../../utils/util.js')

Page({
  data: {
    logs: []
  },
  onLoad() {
    this.setData({
      logs: (wx.getStorageSync('logs') || []).map(log => {
        return {
          date: util.formatTime(new Date(log)),
          timeStamp: log
        }
      })
    })
  }
})

三. 单选框和复选框

复选框checkbox,自带封装组件为checkbox-group

单选框radio,自带封装组件为radio-group

封装组件要做的是记录被用户选择的组件中的框的value,同上,用e.detail.value取出来

这里的例子是对一行字进行动态渲染,可选渲染在复选框和单选框中

<view class="box">
  <text style="font-size: {{myFontsize}}; font-weight: {{myBold}}; font-style: {{myItalic}}; text-decoration: {{myUnderline}};">苏州大学</text>
  <checkbox-group bindchange="changeCheckbox">
    <checkbox value="isBold">加粗</checkbox>
    <checkbox value="isItalic">斜体</checkbox>
    <checkbox value="isUnderline">加下划线</checkbox>
  </checkbox-group>
  <radio-group bindchange="changeRadio">
    <radio value="15px">15px</radio>
    <radio value="25px">25px</radio>
    <radio value="40px">40px</radio>
  </radio-group>
</view>
const app=getApp()
var C;
Page({

  /**
   * 页面的初始数据
   */
  data: {
    
  },
  changeCheckbox:function(e){
    C=e.detail.value;
    for(var i=0;i<C.length;i++){
      if(C[i]=='isBold'){
        this.setData({
          myBold:'bold'
        })
      }
      if(C[i]=='isItalic'){
        this.setData({
          myItalic:'italic'
        })
      }
      if(C[i]=='isUnderline'){
        this.setData(
          {
            myUnderline:'underline'
          }
        )
      }
    }
  },
  changeRadio:function(e){
    this.setData({
      myFontsize:e.detail.value
    })
  }
})
radio,checkbox{
  font-size: 15px;
  display:inline-flex;
  flex-direction: row;
  margin:10px;
}

四. 滑动条组件

最终图如上。 

slider使用时有很多可选属性,这里介绍几个:

data-:data是个数组,里面包含了这个滑动条代表的多种属性内容,这里使用data-color,属性内容为颜色。获取这个数组里指定内容组的内容(以color组为例)时可以用:e.currentTarget.dataset.color

value代表数值由谁决定/改变后传递给谁。

block-color就是滑动条上小滑块的颜色。

max是滑块能表达的最大值。

show-value是是否显示滑块所在位置当前数值。

<view class="box">
  <view>
    红色
  </view>
  <slider data-color="r" value="{{r}}"  max="255" block-color="red" show-value="true" bindchange="changeC"/>
  <view>
    绿色
  </view>
  <slider data-color="g" value="{{g}}" max="255" block-color="green" show-value="true" bindchange="changeC"/>
  <view>
    蓝色
  </view>
  <slider data-color="b" value="{{b}}" max="255" block-color="blue" show-value="true" bindchange="changeC"/>
  <view>
    透明度
  </view>
  <slider datacolor="a" value="{{a}}" max="1" step="0.01" block-color="purple" show-value="true" bindchange="changeC"/>
  <view class="showblock" style="background-color: rgba({{r}}, {{g}}, {{b}}, {{a}});">
  </view>
</view>
const app=getApp()
var C;
Page({

  /**
   * 页面的初始数据
   */
  data: {
    r:50,
    g:100,
    b:150,
    a:1,
  },
  changeC:function(e){
    C=e.currentTarget.dataset.color;
    var E=e.detail.value;
    console.log(C,E);
    this.setData({
      [C]:E
    })
  }
  
})

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“QT快速上手指南”之计算器(一)Qt Creator,窗口组件

文章目录前言一、什么是QT&#xff1f;二、准备工作&#xff1a;1. 安装Qt Creator&#xff1a;2. 安装Qt SDK&#xff1a;3. 下载安装器&#xff1a;三、窗口组件&#xff1a;四、QT 基本组件的简单介绍&#xff1a;1. QWidget2. QPushButton3. QLabel4. QLineEdit5. QSpinBox…

智能火焰与烟雾检测系统(Python+YOLOv5深度学习模型+清新界面)

摘要&#xff1a;智能火焰与烟雾检测系统用于智能日常火灾检测报警&#xff0c;利用摄像头画面实时识别火焰与烟雾&#xff0c;另外支持图片、视频火焰检测并进行结果可视化。本文详细介绍基于智能火焰与烟雾检测系统&#xff0c;在介绍算法原理的同时&#xff0c;给出Python的…

FPGA基于XDMA实现PCIE X4视频采集HDMI输出 提供工程源码和QT上位机程序和技术支持

目录1、前言2、我已有的PCIE方案3、PCIE理论4、总体设计思路和方案5、vivado工程详解6、驱动安装7、QT上位机软件8、上板调试验证9、福利&#xff1a;工程代码的获取1、前言 PCIE&#xff08;PCI Express&#xff09;采用了目前业内流行的点对点串行连接&#xff0c;比起 PCI …

PE文件解析

PE结构图 工具101editor 文件实列 0-30h为DOS header 40-F0h为DOS STUB 100-1F0h为PE_HEADER 200-2B0h为SECTION_HEADER **虚拟地址&#xff1a;**文件加载到内存中&#xff0c;每个进程都有自己的4GB&#xff0c;这个4GB当中的某个位置叫做虚拟地址 基地址&#xff1a;文件…

23种设计模式之工厂方法模式(黑马程序员)

工厂方法模式一、概述二、结构三、实现四、总结在最后一、概述 定义一个用户创建对象的工厂(接口)&#xff0c;让接口的子类决定去实例化哪个对象&#xff0c;依赖其抽象编程。即工厂方法使一个类的实例化延迟到其工厂的子类。 二、结构 工厂方法模式的主要角色 抽象工厂&a…

计算机组成原理实验二 存储系统预习报告

实验一----静态RAM 一、实验目的 掌握静态随机存储器 RAM 工作特性及数据的读写方法。基于信号时序图&#xff0c;了解读写静态随机存储器的原理。 二、实验预习 1、阅读实验指导书&#xff0c;然后回答问题。 实验所用的静态存储器由一片 6116&#xff08;2K*8bit &#x…

ROS开发之如何在同一个节点订阅、处理、发布消息?

文章目录0、引言1、创建中间特殊文件&#xff08;含订阅者和发布者&#xff09;2、在CMakeLists.txt添加编译规则3、在launch添加启动项4、编译运行5、三维显示0、引言 在ROS应用一般会用到发布者和订阅者&#xff0c;若只接收传感器数据&#xff0c;则只实现订阅者就行&#x…

客户服务 KPI是什么

当企业着手改进其客户服务计划时&#xff0c;必须以可衡量的方式进行。因为如果我们为了改进而改进&#xff0c;没有衡量&#xff0c;我们就永远无法真正知道我们做得有多好&#xff01;如果您的公司已准备好升级其客户服务计划&#xff0c;这里有 12种方法可以衡量和跟踪您的客…

大学生问AI

大学生问AI写在最前面2&#xff0c;描述你在学习工作中碰到的最高级的 AI 是什么&#xff1f;1&#xff0c;你人生中第一次接触到 “人工智能” 的概念和产品是什么&#xff1f; 让你觉得 “人类做得东西的确有智能”&#xff1f;3&#xff0c;你听说过最近的 GPT&#xff0c;n…

Qt5.12實戰之Linux靜態庫與動態庫多文件生成a與so文件並調用

1.編輯並輸入內容到test.cpp與test2.cpp test.cpp #include <stdio.h> int func() {return 888; } test2.cpp #include <stdio.h> int func2() {return 999; } 將test.cpp與test2.cpp編譯成目標文件&#xff1a; g -c test.cpp test2.cpp 一次性生成目標文件…

阅读提升内在美

最近&#xff0c;想在内在美上提升自己&#xff0c;想把玩游戏的时间腾给阅读。不想只是善良&#xff0c;更希望自己拥有智慧拥有力量&#xff0c;更自信更热爱生活。 本篇博文会日日更新&#xff0c;也当作鼓励我继续阅读坚持阅读的动力和监督。 Z-Library 图书馆 分享一个…

LeetCode 1041. 困于环中的机器人

原题链接&#xff1a;1041. 困于环中的机器人 在无限的平面上&#xff0c;机器人最初位于 (0, 0) 处&#xff0c;面朝北方。注意: 北方向 是y轴的正方向。南方向 是y轴的负方向。东方向 是x轴的正方向。西方向 是x轴的负方向。 机器人可以接受下列三条指令之一&#xff1a; …

测试专家须精通Locust

目前随着AI人工智能越来越火&#xff0c;Python 编写的程序越来越多&#xff0c;更多的协议&#xff0c;更多的复杂应用。 所以Locust 是高级性能测试工程师和测试专家&#xff0c;必备技术之一&#xff0c;因为你不可能避免公司中使用python.编写接口或者程序。 在互联网公司…

C#|调用C/C++动态库

参考&#xff1a;C#总结&#xff08;四&#xff09;调用C动态库&#xff08;https://www.shuzhiduo.com/A/A2dmV49qze/&#xff09; 文章目录C#加载C动态库C#加载C#动态库涉及到的概念知识&#xff1a;托管DLL和非托管DLL的区别&#xff08;https://www.tinymind.net.cn/articl…

利用 ELK 处理 Percona 审计日志

Percona Server为 MySQL 数据库服务器进行了改进&#xff0c;在功能和性能上较 MySQL 有着很显著的提升。该版本提升了在高负载情况下的 InnoDB 的性能、为 DBA 提供一些非常有用的性能诊断工具&#xff1b;另外有更多的参数和命令来控制服务器行为 前提 1、有强烈的审计需求。…

网站建设常用的cms建站系统推荐

国内网站建设市场参差不齐&#xff0c;建站公司多如牛毛&#xff0c;网站价格便宜的几百&#xff0c;贵的几十万&#xff0c;作为外行&#xff0c;很难去选择&#xff0c;国内大部分网站建设公司都是营销公司&#xff0c;完全没有底层技术框架的开发能力&#xff0c;90%以上的网…

srs流媒体服务安装和使用

简介 SRS(Simple Realtime Server)是一个简单高效的实时视频服务器&#xff0c;支持RTMP、WebRTC、HLS、HTTP-FLV、SRT等多种实时流媒体协议。 官网&#xff1a;https://ossrs.net/lts/zh-cn/ 编译安装 使用ubuntu系统作为例子&#xff0c;最好是20版本。 1、克隆项目代码 …

2023.4.12

文章目录一&#xff1a;try catch处理异常1&#xff1a;原理&#xff1a;2&#xff1a;catch中如何处理异常**3&#xff1a;try-catch-finally**4&#xff1a;多重catch5&#xff1a;异常的分类6&#xff1a;throw和throws的区别7&#xff1a;练习题8&#xff1a;重载和重写的异…

Python后端架构演进

做了3年的后端开发, 经历一款SaaS产品从0到10(还没有到100, 哈哈哈)的过程, 3年间后端的架构逐步演变, 在微服务的实践过程中遇到的问题也越来越多, 在这里总结下. 产品是一款服务于人力资源的SaaS在线服务, 面向HR有Web Android/iOS 小程序多个客户端, 后端采用RESTful风格AP…

表id自增的方法

数据库主键id自增的方法&#xff0c;列举了几种如下 一、数据库自增&#xff08;部分数据库支持&#xff09; 创建表的时候设置id自增即可&#xff0c;或者后期修改表id自增 # mysql 语法 create table your_table_name(id bigint(20) not null auto_increment primary key …