微信小程序的简单开发案例(记事本)

2023-11-15

微信小程序案例之简单记事本实现

我最近在学习微信小程序,主要熟悉了微信开发者工具的简单使用以及小程序的开发流程。微信小程序的学习要求不高,只要有一些web前端等知识基础即可。

1,小程序简介

微信小程序是一种不用下载就能使用的应用,也是一项创新,经过将近两年的发展,已经构造了新的微信小程序开发环境和开发者生态。
开发工具下载地址:https://mp.weixin.qq.com/wiki

2,微信小程序项目结构

在这里插入图片描述

3,微信小程序案例之记事本

我在微信开发者工具中创建了一个TODOS DEMO项目这个项目的结构如下图所示。在这里插入图片描述
app.json

{  "pages":[    "pages/todos/todos"      ], 
 "window":{    "backgroundTextStyle":"light", 
"navigationBarBackgroundColor": "#fff",
 "navigationBarTitleText": "记事本",
 "navigationBarTextStyle":"black"  }, 
 "style": "v2",  "sitemapLocation":
 "sitemap.json"}

todos.wxml

<view class="container" ><view class="header">
<image src="../../images/plus.png" bindtap="addTodoHandle"></image>
<input type="text" placeholder="请输入..." value="{{input}}" bindinput="inputChangeHandle" bindconfirm="addTodoHandle">
</input>
</view>



<block wx:if="{{todos.length}}">
<view class="todos">
<view class="item{{item.complete?' complete':' '}}" wx:for="{{todos}}"  bindtap="toggleToHandle" data-index="{{index}}"><!--wx:for的任务就是遍历数组的对象个数-->
 <!-- 图标显示 -->
 <icon type="{{item.complete?'success':'circle'}}"></icon>
 <text>{{item.name}}</text>
  <icon type="clear" size="16" catchtap="DeleteHandle" data-index="{{index}}"></icon>  <!--图标的大小利用size属性即可调整-->
 </view>
 </view>
 <view class="footer">
 <text bindtap="toggleAllHandle">全选</text>
 <text wx:if="{{leftCount}}">{{leftCount}} {{leftCount>1?'未完成':'未完成'}} 事件</text>
 <text bindtap="clearHandle">清空完成事件</text>
 </view>

</block>
<view wx:else>
<text>您还没有开始记录任何事件呢哦</text>
</view>
</view>

todos.wxss

.container{  border-top: 1rpx solid #e0e0e0;
}
.header{  border: 1rpx solid #e0e0e0;
 margin: 20rpx;
 border-radius: 10rpx; /*边框圆角平滑度*/
 box-shadow: 0 0 5px #e0e0e0; /*边框阴影*/
 display: flex;/*伸缩布局*/
 padding: 20rpx; /*内边距*/
 align-items: center; /*侧轴对其,就是说的y轴*/
 }
.header image{ 
 width: 40rpx;
 height: 40rpx;
 margin-right: 20rpx;
     }
.todos{
 border: 1rpx solid #e0e0e0;
 margin: 20rpx;
 border-radius: 10rpx; /*边框圆角平滑度*/ 
 box-shadow: 0 0 5px #e0e0e0; /*边框阴影*/
  }

.todos .item{
 padding: 20rpx;
 border-bottom: 1rpx solid #e0e0e0;
 display: flex;
 align-items: center; /*侧轴对齐,主要用作图标对齐一致*/
 }
 .todos .item:last-child{
 /*防止最后一个项目与外边框线重合加深颜色*/  /* color: red; */
  border-bottom: 0;
  }
 .todos .item text{
  flex: 1; /*采用固比模型*/
  font-size: 35rpx;  
  color: #444; 
   margin-left: 20rpx;
    }
 .todos .item.complete text{
  color: #888;
  text-decoration: line-through; /*内容添加中划线*/
}
 .footer{  display: flex; 
  justify-content: space-between; /*内容的一种对齐方式,元素与元素之间的缝隙是默认相等的*/
 /* justify-content: space-around; 元素与元素左右之间的缝隙是相等的 */ 
  margin: 20rpx;  
  font-size: 30rpx;
 }

todo.js

Page({
data:{
  //文本框的数据模型
    input :'',
    //任务清单数据模型 
    todos:[
     { 
          name : '学习html', //任务名称
          complete: false //任务完成状态
      },
       { 
            name : '学习math', //任务名称
            omplete: false //任务完成状态
        }, 
         { 
            name : '学习hadoop', //任务名称  
             complete: true //任务完成状态 
            }
         ],
   leftCount:2
},
//1,先让按钮点击时执行一段代码
addTodoHandle:function(){
//点击按钮之后执行事件
 // console.log(this.data.input) //拿到文本框的值
if(!this.data.input) return
 var todos=this.data.todos
 todos.push({ 
 name:this.data.input, 
 complete:false, 
 allComplete:false 
  })
 wx.setStorage({
 key:"todos",
 data:todos
  })
 console.log(wx.getStorageSync('todos'))
 //必须显式的通过setData来改变数据,这样界面才会得到变化
this.setData({todos:todos,input:'',leftCount: this.data.leftCount+1})
},
//2,拿到文本框里面的值
//2.1由于小程序的数据绑定是单向的,必须要给文本注册改变事件
inputChangeHandle:function(e){
 // console.log(e.detail)
 this.setData({ 
     input:e.detail.value
    })
},
toggleToHandle:function(e){
  //切换当前点中item的完成状态
  //console.log(e.currentTarget)
var item=this.data.todos[e.currentTarget.dataset.index]
item.complete=!item.complete
var leftCount=this.data.leftCount+(item.complete?-1:1)
//console.log(item)
this.setData({todos:this.data.todos,leftCount:leftCount})
},
//这个方面需要注意冒泡问题
DeleteHandle:function(e){
//删除任务操作
console.log(e.currentTarget)
var todos=this.data.todos
//item就是splice方法中删除掉的元素
var item=todos.splice(e.currentTarget.dataset.index,1)[0] //删除数组中对象的方法,1是从固定下标开始删除几个数组元素
var leftCount=this.data.leftCount-(item.complete?0:1)
this.setData({todos:todos,leftCount:leftCount})
},
toggleAllHandle:function(){ 
 //this在这里永远指向的当前的页面对象  
 this.data.allComplete=!this.data.allComplete
 var todos=this.data.todos
 var that=this
 todos.forEach(function(item){ //for循环  
 item.complete=that.data.allComplete
 })
 var leftCount=this.data.allComplete?0:this.data.todos.length
 this.setData({todos:todos,leftCount:leftCount})
 },
 clearHandle:function(){
   var todos=[]  //定义空数组
   this.data.todos.forEach(function(item){
   if(!item.complete){
     todos.push(item)  //把所有未完成的任务存储到一个新的数组
     }  
     })
      this.setData({    todos:todos  })
      }
})

效果图演示

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信小程序的简单开发案例(记事本) 的相关文章

随机推荐

  • UE4 蓝图通信:接口调用

    UE4学习心得 蓝图间信息通信的几种方法 UE4的接口调用技术有点简单粗暴 而且主要体现在主蓝图对子蓝图的信息通信 在内容浏览器中添加一个蓝图接口 命名为TestInterface 双击打开接口 直接使用其创建时自带的一个接口函数 将其重命
  • 物理机安装centos7(u盘安装)——详细版

    我用的是华为的物理机 其它物理机操作几乎相同 可能不同的设置调试方法不同 如果是虚拟机安装 直接跳到centos7设置即可 物理机U盘启动 安装centos8方法相同 可能有些需要硬件配置相关 相关问题看具体报错方式 UltraISO下载地
  • 在C语言中 ¬∧∨这些符号什么意思

    b b b a a a b a a 或运算是 a b a b b b a a a 这三个都是位运算 是取非运算 交你个小窍门 没啥子好多的了 好好看看 里面有详细的解释 这就是在逻辑运算中常用到的短路判断 ls的已经说的很清楚了 b a b
  • 微信小程序之首页搭建

    小程序开发与实战 学习视频 https www bilibili com video BV1Gv411g7j6 p 9 spm id from pageDriver 实现导航栏和tabBar 实现导航栏和tabBar tabBar看下图 参
  • 电荷泵

    电荷泵 又称为电容式的开关稳压器 或开关电容DC DC变换器 无感式DC DC变换器 电荷泵采用电容作为开关和储能的元件 如图所示 S1与S3闭合 S2与S4断开 则Vin给电容充电 而后S1与S3断开 S2与S4闭合 则电容放电 此时Vo
  • Virtual Judge-4099:队列和栈

    Virtual Judge 4099 队列和栈 题目描述 队列和栈是两种重要的数据结构 它们具有push k和pop操作 push k是将数字k加入到队列或栈中 pop则是从队列和栈取一个数出来 队列和栈的区别在于取数的位置是不同的 队列是
  • PyTorch入门(六)使用Transformer模型进行中文文本分类

    在文章PyTorch入门 五 使用CNN模型进行中文文本分类中 笔者介绍了如何在PyTorch中使用CNN模型进行中文文本分类 本文将会使用Transformer模型实现中文文本分类 本文将会使用相同的数据集 文本预处理已经在文章PyTor
  • C语言程序——用星号打印图案

    文章目录 前言 一 用星号打印图案 二 程序实例 1 程序代码 2 运行结果 3 结果分析 三 拓展应用 总结 前言 用打印字符来输出星号组成的HELLO 一 用星号打印图案 用星号打印图案 一般利用星号画出具体的模拟输出形式 然后在输出时
  • 【Android】常用对话框大全(一)Android Dialog

    Android的对话框有多少种 Android好看的对话框有很多 如Android material qmui xui kongzue等系列对话框 但博主只打算讲解Android material系列对话框 讲太多没必要 实在想要做成人家那
  • 千万级数据清洗ETL设计方案

    千万级数据清洗项目分析总结 项目简介 一 需求分析 1 前期需求 2 中期需求 3 后期需求 二 技术支持 1 MySQL 2 Redis 三 框架设计 1 流线型代码 2 工厂模式 四 调式工作 1 线上测试 五 问题回顾 1 Mysql
  • scratch python的区别ev3_机器人编程和少儿编程,傻傻分不清—乐高EV3入门感想

    机器人编程和少儿编程的区别 机器人编程和少儿编程不是一个概念 机器人编程是少儿编程的重要组成部分 少儿学习编程大体上是两种方式 1 纯软件 最具代表性的是scratch 是麻省理工学院专门针对小朋友研发的图形化编程语言 无需英文和代码基础
  • win7系统扩展双屏幕时,如何在两个屏幕下都显示任务栏

    扩展屏幕下都显示任务栏 win7系统本身无法设置该功能 目前我是不知道 但可以下载第三方软件来解决该问题 第一步 Dual Monitor Taskbar 下载软件 下载链接 http pan baidu com s 1o61isjw 密码
  • Web 浏览器演变史

    浏览器的演变是由梦想和创新编织而成的 Tim Bernas Lee 在80年代在CERN工作时 提出了HTML技术 用以改善CERN庞大的信息管理需求 Tim 也编写了第一款浏览器 它是基于NeXT提供的interface builder开
  • 【STM32学习笔记】(7)——STM32时钟系统详解

    STM32时钟系统 时钟系统的简介 RCC Reset Clock Control 复位和时钟控制器 时钟是单片机运行的基础 时钟信号推动单片机内各个部分执行相应的指令 时钟系统就是CPU的脉搏 决定cpu速率 像人的心跳一样 只有有了心跳
  • 深度优先搜索(DFS) 广度优先搜索(BFS)

    深度优先搜索算法 Depth First Search DFS是搜索算法的一种 它沿着树的深度遍历树的节点 尽可能深的搜索树的分支 当节点v的所有边都己被探寻过 搜索将回溯到发现节点v的那条边的起始节点 这一过程一直进行到已发现从源节点可达
  • 软件系统产品线特征及构建过程

    根据SEI定义 结合业界的一些研究 软件产品线有如下几个重要特征 1 一个软件产品线应该有一系列的产品成员组成 既产品家族 2 产品家族中的所有产品都服务于一些特定的领域 3 产品家族成员之间在服务功能 产品质量 产品性能 产品应用范围等方
  • Kotlin协程概览

    协程 Coroutines 并不是 Kotlin 提出来的新概念 很多的编程语言都有实现 如 Go Python 等 本文所讲 专指kotlin的协程 在Android 11中 Asynctask已经被废弃了 因为协程可以更简单 直观的实现
  • (管用)Sqlite数据库升级

    调用构造器DBHelper中super里面的方法 增大newVersion的值 就会自动执行onUpgrade 增加数据库字段的sql语句 String upgradeGoods alter table Person add column
  • matlab 里tic toc的用法,Matlab中tic和toc用法

    简单地说 tic和toc是用来记录matlab命令执行的时间 tic用来保存当前时间 而后使用toc来记录程序完成时间 两者往往结合使用 用法如下 tic operations toc 显示时间单位 秒 Tic和toc函数可以计算运行一段时
  • 微信小程序的简单开发案例(记事本)

    微信小程序案例之简单记事本实现 我最近在学习微信小程序 主要熟悉了微信开发者工具的简单使用以及小程序的开发流程 微信小程序的学习要求不高 只要有一些web前端等知识基础即可 1 小程序简介 微信小程序是一种不用下载就能使用的应用 也是一项创