欢迎来到258分享网,纯净的网络源码分享基地!

258资源分享网

全部作品
全部作品
网站源码
微信源码
素材特效
源码插件
视频教程
建站学院
热门搜索: 织梦  农业种植  农业  安全设置  官方
258资源分享 > 建站学院 > 微信开发 > 小程序TodoList实践

推荐下载

HTML5响应式自适应网咯设计

2020-05-12   浏览:789

HTML5自适应律师工作室类网

2020-04-04   浏览:654

高端HTML5响应式企业通用网

2020-05-06   浏览:560

html5响应式外贸网站英文版

2020-05-08   浏览:545

HTML5影视传媒文化公司类网

2020-05-12   浏览:543

小程序TodoList实践

发布时间:2020-10-30  

看完官方的文档介绍后,就想找个简单的例子来验证实现一下,TodoList MVC就很好了,简单容易。

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

添加todo

储存在应用缓存

列表展示

区分状态显示:全部、未完成、已完成

改变todo状态

删除todo

根据以上功能,小程序完成如下:

GitHub: github.com/CH563/TodoL…

小程序TodoList实践

下面记录一下我的完成过程:

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

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

pages/

app.js

app.json

app.wxss

文录绍构和具体配置查看官方文档: mp.weixin.qq.com/debug/wxado…

基本配置

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

// gulpfile.js var 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" } } 页面开发

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

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

<text class="userinfo-nickname">{{userInfo.nickName}}</text> <!-- 三元运算 --> <text class="{{status === '1'?'active':''}}" data-status="1" bindtap="showStatus">全部</text> 添加todo

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

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

<view class="addForm {{addShow?'':'hide'}}"> <view class="addForm-div"> <input class="weui-input" placeholder="请输入todo" value="{{addText}}" bindinput="setInput" focus="{{focus}}" /> <view class="addForm-btn"> <button class="weui-btn mini-btn" type="warn" bindtap="addTodo" size="mini">确定添加</button> <button class="weui-btn mini-btn" type="default" bindtap="addTodoHide" size="mini">取消</button> </view> </view> </view>

实时赋值事件处理

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内滚动

本文标签

: