千家信息网

微信小程序TodoList如何使用

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"微信小程序TodoList如何使用",在日常操作中,相信很多人在微信小程序TodoList如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"微信小
千家信息网最后更新 2026年11月02日微信小程序TodoList如何使用

这篇文章主要介绍"微信小程序TodoList如何使用",在日常操作中,相信很多人在微信小程序TodoList如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"微信小程序TodoList如何使用"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

之前都用JQ、Backbone、vue简单撸过,大概功能如下:

添加todo
储存在应用缓存
列表展示
区分状态显示:全部、未完成、已完成
改变todo状态
删除todo

1小程序手指缩放图片开发过程

下载小程序开发工具:开发者工具下载

安装完成后,使用微信扫一扫登录,选好文件夹后创建即可,开发工具会自动生成以下目录:

pages/

app.js

app.json

app.wxss

2基本配置

由于平时开发习惯用Less,如果在直接使用小程序的wxss来编写的话,就恢复原生编写方式,大大的不便,所以直接使用了gulp来实时编译Less,和修改文件名为wxss。小程序开发工具是不支持Less,直接用vscode来开发,小程序开发工具是用实时预览和调试即可,vscode也有丰富的插件支待小程序语法提示。

// gulpfile.jsvar gulp = require('gulp')var less = require('gulp-less')var plumber = require('gulp-plumber')var rename = require('gulp-rename')gulp.task('less', function () {  return gulp.src('./app.less')    .pipe(plumber())  // 错误处理    .pipe(less()) // 编译less    .pipe(rename((path) => path.extname = '.wxss')) // 编译后生成文件修改后缀为.wxss    .pipe(gulp.dest('./'));});gulp.watch('./app.less', ['less']); // 实时监控app.less文件变化,运行任务

UI组件也直接引用了小程序支持的weui-wxss

@import "./weui.wxss";

在app.json定义好小程序页面路由和配色:

{  "pages":[    "pages/index/index"  ],  "window":{    "backgroundTextStyle":"light",    "navigationBarBackgroundColor": "#ca2100",    "navigationBarTitleText": "TodoList",    "navigationBarTextStyle":"white"  }}

3页面开发

页面文件都存放在pages/目录下,每个功能页面都会创建一个文件夹,TodoList现只需一个页面完成即可

数据绑定使用 Mustache 语法(双大括号)将变量包起来

{{userInfo.nickName}}全部

添加todo

使用字段addShow来判断添加输入层显示隐藏即可

input输出框这里不是双向绑定,所以这里添加一个事件bindinput="setInput"来赋值实时变化

        

实时赋值事件处理

setInput: function (e) {    this.setData({      addText: e.detail.value    })}

取消时,需要清空input的值,input里需要绑定value="{{addText}}"

Page({ data:{     //... },  //... addTodoHide: function () {    this.setData({      addShow: false, // 控制添加输入面板隐藏      focus: false, // 失去焦点      addText: '' // 清空值    }) } //...})

添加todo

Page({ data:{     //... },  //... addTodo: function () {    // 检查有没有输入    if (!this.data.addText.trim()) {      return    }    var temp = this.data.lists // 取出lists    var addT = {      id: new Date().getTime(), // 取当前时间      title: this.data.addText,      status: '0'    }    temp.push(addT) // 添加新的todo    this.showCur(temp) // 处理当前状态的方法    this.addTodoHide() // 添加成功后,隐藏添加面板方法    wx.setStorage({ // 小程序异步缓存      key:"lists",      data: temp    })    wx.showToast({ // weui toast组件      title: '添加成功!',      icon: 'success',      duration: 1000    }); } //...})

列表部分

scroll-view内滚动

列表渲染,事件触发,利用data传参,bind绑定事件

暂无数据{{item.title}}{{api.formatTime(item.id)}}删除

滑动删除

效果:当向左滑动时,content跟随手指像左移动,同时右侧出现del按钮;当滑动距离大于按钮宽度一半松开手指时自动滑动到左侧显示出按钮,小于一半时自动回到原来的位置,隐藏按钮。

实现思路:content和del按钮分别是绝对定位,利用z-index层来控制让content来盖住del,当content向左滑动时,del按钮就会露出来。

微信小程序api提供的touch对象和3个有关手指触摸的函数(touchstart,touchmove,touchend)来实现content随手指移动

列表的content已绑定这个三个事件:bindtouchstart="touchS" bindtouchmove="touchM" bindtouchend="touchE"

实现方法:

注意txtStyle,在content在绑定这个属性的,实现跟随手指移动的

delBtnWidth为了del按钮的宽度,这里以rpx为单位

Page({ data:{     //... },  //...  touchS: function (e) {    // console.log('开始:' + JSON.stringify(e))    // 是否只有一个触摸点    if(e.touches.length === 1){      this.setData({        // 触摸起始的X坐标        startX: e.touches[0].clientX      })    }  },  touchM: function (e) {    // console.log('移动:' + JSON.stringify(e))    var _this = this    if(e.touches.length === 1){     // 触摸点的X坐标      var moveX = e.touches[0].clientX      // 计算手指起始点的X坐标与当前触摸点的X坐标的差值      var disX = _this.data.startX - moveX     // delBtnWidth 为右侧按钮区域的宽度      var delBtnWidth = _this.data.delBtnWidth      var txtStyle = ''      if (disX == 0 || disX < 0){ // 如果移动距离小于等于0,文本层位置不变        txtStyle = 'left:0'      } else if (disX > 0 ){ // 移动距离大于0,文本层left值等于手指移动距离        txtStyle = 'left:-' + disX + 'rpx'        if(disX >= delBtnWidth){          // 控制手指移动距离最大值为删除按钮的宽度          txtStyle = 'left:-' + delBtnWidth + 'rpx'        }      }      // 获取手指触摸的是哪一个item      var index = e.currentTarget.dataset.index;      var list = _this.data.curLists      // 将拼接好的样式设置到当前item中      list[index].txtStyle = txtStyle      // 更新列表的状态      this.setData({        curLists: list      });    }  },  touchE: function (e) {    // console.log('停止:' + JSON.stringify(e))    var _this = this    if(e.changedTouches.length === 1){      // 手指移动结束后触摸点位置的X坐标      var endX = e.changedTouches[0].clientX      // 触摸开始与结束,手指移动的距离      var disX = _this.data.startX - endX      var delBtnWidth = _this.data.delBtnWidth      // 如果距离小于删除按钮的1/2,不显示删除按钮      var txtStyle = disX > delBtnWidth/2 ? 'left:-' + delBtnWidth + 'rpx' : 'left:0'      // 获取手指触摸的是哪一项      var index = e.currentTarget.dataset.index      var list = _this.data.curLists      list[index].txtStyle = txtStyle      // 更新列表的状态      _this.setData({        curLists: list      });    }  }  //...})

到此,关于"微信小程序TodoList如何使用"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

程序 手指 按钮 开发 移动 文件 事件 坐标 实时 工具 状态 页面 宽度 方法 学习 程序开发 处理 控制 编译 输入 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 华服互联网科技怎么样 河南真二互联网科技有限公司 互联网与科技发展 互联网科技金融 金融科技 互联网金融 深圳互联网络科技有限公司 互联网 卓越科技 互联网未来科技 四川狮子座互联网科技 互联网科技创新企业排名 互联网为啥属于高科技 国大互联网教育科技有限公司工作 高科技互联网发展前景如何 山东子淼互联网科技有限公司 张召忠谈中国互联网科技 南京一网一红互联网科技有限公司 中国互联网公司的科技投入 河南商务圈互联网科技有限公司 互联网高科技绘画 颐高云石互联网科技 科技互联网技术 金融科技和互联网金融 温州喔噻互联网科技有限公司 广州恒生互联网科技有限 广州市恰铎互联网科技有限公司 链环科技传统企业怎么转型互联网 互联网科技人工智能实验室 广州新华互联网科技学校电竞方面 恒生科技互联网指数十大成分股 中国主要互联网科技公司
0