HarmonyOs学习笔记
如何在鸿蒙上搭建一个todoList
hml方面
使用到一个switch组件,书写格式如下:
<switch showtext="true" checked="{{$item.status}}" texton="完成" textoff="待办" class="switch" @change="switchChange($idx)" > </switch>
css方面
没啥说的,略过
js方面
构建一个函数用来计算剩余多少事情
computed:{ todoCount(){ let num =0; this.todolist.forEach(element=>{ if(!element.status){ num++ } }); return num }
然后给每个按钮设定时间就好了
数据方面:
给代办事项加上内容
export default[ { info:'给人打电话', status:true, }, { info:'输出工作计划', status:false, }, { info:'准备7点的会议', status:true, }, { info:'整理资料', status:false, }, { info:'上分', status:true, }]
然后在js文件中引入即可
import todolist from "../../common/datas/todolist.js"
具体实现效果
具体代码如下:
hml
<div class="container"> <text class="title">待办事项</text> <div class="item" for="{{todolist}}"> <text class="todo">{{$item.info}} </text> <switch showtext="true" checked="{{$item.status}}" texton="完成" textoff="待办" class="switch" @change="switchChange($idx)" > </switch> <button class="remove" @click="remove($idx)"> 删除 </button> </div> <div class="info"> <text class="info-text">您还有</text> <text class="info-num">{{todoCount}}</text> <text class="info-text">件事情待办</text> </div> <div class="add-todo"> <input class="plan-input" type="text"></input> <button class="plan-btn" onclick="assTodo" @click="addTodo">添加待办</button> </div></div>
css
.container { flex-direction: column; justify-content: flex-start; align-items: center; padding-bottom: 100px;}.title { font-size: 25px; margin-top:20px; margin-bottom: 20px; color:#000000; opacity: 0.9; font-size:28px;}.item{ width:325px; padding:10px 0; flex-direction:row; align-items:center; justify-content: space-around; border-bottom: 1px solid #eee;}.todo{ color:#000; width:180px; font-size:18px;}.switch{ font-size:12px; texton-color: green; textoff-color: red; text-padding: 5px; width:100px; heigh:24px; allow-scale: false;}.remove{ font-size:12px; margin-left: 10px; width:68px; height: 22px; color:#fff; background-color: red;}.info{ width:100%; margin-top: 10px; justify-content: center;}.info-text{ font-size:18px; color:#AD7A1B;}.info-num{ color:orangered; margin-left: 10px; margin-right: 10px;}.add-todo{ position: fixed; left: 0; bottom:0; width:100%; height:60px; flex-direction: row; justify-content: space-around; align-items:center; background-color: #ddd;}.plan-input{ width:240px; height:35px; background-color: #fff;}.plan-btn{ width:90px; height: 30px; font-size:15px;}
js
import todolist from "../../common/datas/todolist.js"export default { data: {todolist, }, remove(index){console.log(index)this.todolist.splice(index,) }, switchChange(index){ this.todolist[index].status = !this.todolist[index].status }, addTodo(){ this.todolist.push({ info:'IDE工具无法监听键盘输入', status:false }) }, computed:{ todoCount(){ let num =0; this.todolist.forEach(element=>{ if(!element.status){ num++ } }); return num } }}
js中引入的todoList.js文件
export default[ { info:'给人打电话', status:true, }, { info:'输出工作计划', status:false, }, { info:'准备7点的会议', status:true, }, { info:'整理资料', status:false, }, { info:'上分', status:true, }]
(引入时注意路径即可)