todolist 订阅
ToDoList是一款非常优秀的任务管理软件,用户可以用它方便地组织和安排计划。该软件短小精悍,仅有一个 数百 KB 的可执行文件就能完成所有功能,并且界面设计优秀,初级用户也能够快速上手 [1]  。 展开全文
ToDoList是一款非常优秀的任务管理软件,用户可以用它方便地组织和安排计划。该软件短小精悍,仅有一个 数百 KB 的可执行文件就能完成所有功能,并且界面设计优秀,初级用户也能够快速上手 [1]  。
信息
类    型
任务管理软件
特    点
短小精悍
中文名
todolist
最新版本
:v6.7.8
todolist概况
最新版本:v6.7.8 。
收起全文
精华内容
下载资源
问答
  • 可以对todolist进行分类,用户勾选即将待办项分入已完成组 todolist的每一项可删除和编辑 将用户输入数据写入localStorage本地缓存,实现对输入数据的保存 可以清楚域名下本地缓存,并清空所有todolist项 具体...
  • todolist.html

    2020-09-28 19:56:47
    实现todolist,可以让相互切换,块来下载吧,免费哟!,够够够,去挨个领,----------------------------------------------------------------------------------------------------------------------------
  • vue+koa2的todolist 技术栈: vue koa2 mysql 项目说明 新手练习项目,工作主要是前端,本着兴趣接触学习koa2。 主要功能为登录,注册,对todolist增删改查等基础功能。 koa2主要提供接口,页面渲染路由等都由vue来...
  • ts-react-todoList 用react + ts完成简单的todoList import React , { useEffect , useRef , useState } from "react" ; import "./App.css" ; import produce from "immer" ; interface TodoList { id: string ; ...
  • 实现todolist整体思路: 思路图如果看着不方便 js代码里面已经做好详细注释 ToDoList—最简单的待办事项列表 ToDoList 正在进行 已经完成 Copyright :copyright: 2014 todolist.cn css...
  • 主要为大家详细介绍了vue实现ToDoList简单实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • todoList 结合之前 Vuejs 基础与语法 •使用 v-model 双向绑定 input 输入内容与数据 data •使用 @click 和 methods 关联事件 •使用 v-for 进行数据循环展示 <!DOCTYPE html> <html lang=en> <head&...
  • •简单todolist功能的实现 用户点击提交按钮时,将input框的内容显示在下方的list中,同时清空list中内容。 <body> <input v-model=inputValue/> <button @click=submit>submit</button...
  • ToDoList链接: ToDoList—最简单的待办事项列表 先把css样式以及js文件引入进来,jQuery文件要写在你自己的js文件上边 <link rel=stylesheet href=css/index.css rel=external nofollow > <script src=...
  • 主要介绍了vue组件编写之todolist组件的实例讲解,本文给大家介绍的非常详细,需要的朋友可以参考下
  • 作业前-Todolist Todolist是一个Android应用程序,它允许构建待办事项列表和基本的待办事项管理功能,包括添加新项目,编辑和删除现有项目。 提交人:Aravindh Balakrishnan 花费时间:总共花费3个小时 用户故事 ...
  • 主要为大家详细介绍了基于vuejs实现一个todolist项目,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Android ToDoList app Deze app maakt gebruik van de node-mysql-todolist backend. Static Code Analysis met SonarQube Er is een configuratie voor static code analysis met behulp van SonarQube. Deze ...
  • Vue实现todolist

    2018-07-13 10:48:01
    利用vue框架,实现todolist MVC DEMO,基本实现必备功能,其中使用到了element-ui
  • ToDoList Wiki回购 这个和所有ToDoList_仓库都用于任务管理/项目管理FOSS。 该Wiki库包含使用该软件的所有可用文档。 在提出问题或发表问题之前,请先检查这里。 目前,所有页面均为“进行中”,可能会快速更改,...
  • ToDoList CLI [v1.0]一个非常有用的脚本,可让您创建自己的ToDoList。 在CLI中创建现代且易于执行的列表,增加待办事项的重要性,只需表明它们已完成并最终确定尽可能多的列表即可! 信息:使用[TheBashMenu]...
  • 深度监视 概念:为了发现对象内部值的变化,可以在选项参数中指定 deep: true ;注意监听数组的变动不需要这么做 方法使用 第一个handler:其值是一个回调函数;即监听到变化时应该执行的函数 第二个是deep:其值是...
  • 抄送清单 Toclist Manager扩展程序,用于 安装 :CocInstall coc-todolist 产品特点 允许为待办事项设置提醒 使用要领自动上传/下载青少年 ...:CocCommand todolist.download :从要点下载todolist
  • ToDoList

    2021-02-19 15:18:00
    ToDoList 使用TS+vue实现如下效果。 包含内容块的增删改查,主要介绍过程中的一些重要的点和思想,代码在最后。 弹窗编辑块在添加和修改时均有使用,将弹框显示的状态放在vuex中管理; 增删改查各个方法在各个组件...

    ToDoList

    使用TS+vue实现如下效果。
    在这里插入图片描述

    包含内容块的增删改查,主要介绍过程中的一些重要的点和思想,代码在最后。

    1. 弹窗编辑块在添加和修改时均有使用,将弹框显示的状态放在vuex中管理;
    2. 增删改查各个方法在各个组件中使用,将封装的增删改查方法实例化放入vuex中;
    3. 编辑时编辑框的内容使用深拷贝;
    4. 将编辑时id和transData过渡数据放在vuex中;
    5. 通过editId判断是添加还是编辑,添加时editId初始化为null;
    6. 通过localStoreage存储数据,方法操作基于localStoreage
    7. itemData.ts、menu.ts存放最基本的数据结构及枚举结构,dataAction.ts存放操作方法
    8. 组件menuBar,menuList, Dialog三个组件
    9. 分类查询在dataAction.ts中添加方法,更改dataList,每次读取需要重新拿到所有的数据。

    itemData.ts

    import Category from "./enum";
    // 数据类
    class ItemData {
        id!: number
        categoryId!: number
        title!: string
        content!: string
        createTime!: string
        constructor(id: number = -1, categoryId: number = -1, title: string, 
            content: string, createTime: number = -1) {
            this.id = id;
            this.categoryId = categoryId;
            this.title = title;
            this.content = content;
            this.createTime = this.dateFormate();
        }
        dateFormate(): string {
            let time = new Date();
            let str = time.getFullYear() + ":" + time.getMonth() + ":" + time.getDay();
            return str;
        }
    }
    
    export default ItemData;
    

    dataAction.ts

    import ItemData from "./itemData";
    import Category from "@/store/enum";
    // 数据操作
    class dataAction {
        dataKey!: string
        dataList!: Array<ItemData>
        constructor(dataKey: string = "dataList") {
            this.dataKey = dataKey
            // 读取数据
            this.dataList = this.readData();
        }
        // 读取数据
        readData(): any[] {
            let strData: string | null = window.localStorage.getItem(this.dataKey);
            let arr: any[] = strData ? JSON.parse(strData) : [];
            return arr;
        }
        // 编辑数据
        editData(itemData: ItemData) {
            let editData: ItemData | undefined = this.dataList.find(item => {
                return item.id === itemData.id;
            });
            if (editData) {
                editData.categoryId = itemData.categoryId;
                editData.title = itemData.title;
                editData.content = itemData.content;
                this.saveData(this.dataList);
            }
        }
        // 删除数据
        delData(id:number): boolean {
            let index = this.dataList.findIndex(item => item.id === id);
            if (index > -1) {
                this.dataList.splice(index, 1);
                this.saveData(this.dataList);
                return true;
            }
            return false;
        }
        // 新增数据
        addData(newData: ItemData): number {
            let data = !this.dataList ? [] : this.dataList;
            let newId = !data.length ? 1 : data[data.length - 1].id + 1;
            newData.id = newId;
            data.push(newData);
            // 保存数据
            this.saveData(data);
            return newId;
        }
        saveData(strData: ItemData[]): void {
            let str: string = JSON.stringify(strData);
            window.localStorage.setItem(this.dataKey, str);
        }
        // 拿到类型
        getCategory(cateId: Category): string {
            const arrNames = ["生活", "学习", "娱乐"];
            return arrNames[cateId];
        }
        // 分类查询
        getTypeData(cateId: Category): Array<ItemData> {
            this.dataList = this.readData();
            cateId = Number(cateId);
            if (cateId !== 3) {
                this.dataList = this.dataList.filter(item => {
                    return item.categoryId === cateId;
                });
            }
            return this.dataList;
        }
    }
    export default dataAction;
    
    

    store.ts

    import Vue from 'vue';
    import Vuex from 'vuex';
    import dataAction from '@/store/dataAction';
    Vue.use(Vuex);
    
    export default new Vuex.Store({
      state: {
        showDialog: false,
        dataAction: new dataAction(),
        transData: null,
        editId: null
      },
      mutations: {
        showEditData(state: any, editData: any) {
          state.transData = editData;
        },
        
      },
      actions: {
    
      },
    });
    
    

    enum.ts

    enum Category {
        Work = 0,
        Life = 1,
        Study = 2,
        All = 3
    }
    export default Category;
    

    组件
    home.vue

    <template>
      <div class="home">
        <MenuBar />
        <MenuList />
        <Dialog />
      </div>
    </template>
    
    <script lang="ts">
    import { Component, Vue } from "vue-property-decorator";
    import Dialog from "@/components/Dialog.vue";
    import MenuList from "@/components/MenuList.vue";
    import MenuBar from "@/components/MenuBar.vue";
    
    @Component({
      components: {
        Dialog,
        MenuBar,
        MenuList,
      },
    })
    export default class Home extends Vue {}
    </script>
    

    menubar.vue

    <template>
        <div class="menu-bar">
            <div class="logo">To Do List</div>
            <div class="operate">
                <button @click="add">添加</button>
                <select v-model="type">
                    <option value = 3>全部</option>
                    <option value = 0>生活</option>
                    <option value = 1>学习</option>
                    <option value = 2>娱乐</option>
                </select>
            </div>
        </div>
    </template>
    <script lang="ts">
    import { Vue, Component, Watch } from 'vue-property-decorator';
    
    @Component({
        components: {}
    })
    export default class MenuBar extends Vue{
        type: number = 3
        @Watch("type") selectData(type) {
            console.log(this.type);
            this.$store.state.dataAction.getTypeData(this.type);
        }
        add(): void {
            this.$store.state.editId = null;
            this.$store.state.showDialog = true;
        }
    }
    </script>
    <style lang="scss">
    .menu-bar {
        display: flex;
        justify-content: space-between;
        align-items: center;
        height: 50px;
        width: 100%;
    }
    </style>
    

    menuList.vue

    <template>
        <div class="menu-list">
            <Block v-for="item in dataList" :key="item.id" :val="item" />
        </div>
    </template>
    <script lang="ts">
    import { Vue, Component, Watch } from 'vue-property-decorator';
    import Block from "@/components/Block.vue";
    import ItemData from "@/store/ItemData.ts";
    @Component({
        components: { Block }
    })
    export default class MenuList extends Vue{
        dataList: Array<ItemData> = this.$store.state.dataAction.dataList;
        @Watch("$store.state.dataAction.dataList") getData() {
            this.dataList = this.$store.state.dataAction.dataList;
        }
    }
    </script>
    <style lang="scss">
    .menu-list {
        display: flex;
        flex-wrap: wrap;
        padding: 20px;
        height: calc(100% - 50px);
        box-sizing: border-box;
    }
    </style>
    

    Block.vue

    <template>
    <div class="block">
        <div class="head">
            <div class="left">
                <input class="title" v-model="val.title" />
            </div>
            <div class="right">
                <button @click="edit(val.id)">编辑</button>
                <button @click="del(val.id, val.title)">删除</button>
            </div>
        </div>
        <div class="next">
            <div class="left">
                <span>{{val.createTime}}</span>
            </div>
            <div class="right">
                <span>{{getCateName(val.categoryId)}}</span>
            </div>
        </div>
        <div class="content">
            <!-- <span>{{val.content}}</span> -->
            <textarea v-model="val.content"></textarea>
        </div>
    </div>  
    </template>
    <script lang="ts">
    import { Vue, Component, Prop } from 'vue-property-decorator';
    import {ItemData} from "@/store/itemData.ts";
    @Component({
        components: {}
    })
    export default class Block extends Vue{
        @Prop(ItemData) val
        getCateName(id: number): string {
            return this.$store.state.dataAction.getCategory(id);
        }
        del(id: number, title: string) {
            if (window.confirm(`确定删除${title}的内容吗?`)) {
                this.$store.state.dataAction.delData(id);
            }
        }
        edit(id: number) {
            // 展示模态框
            this.$store.state.showDialog = true;
            this.$store.state.editId = id;
            let item = this.$store.state.dataAction.dataList.find((item: any) => {
                return id === item.id;
            });
            // 深拷贝
            item = JSON.parse(JSON.stringify(item));
            this.$store.commit("showEditData", item);
        }
    }
    </script>
    <style lang="scss">
    .block {
        flex: 0 1 auto;
        width: 25%;
        margin-right: 20px;
        .head, .next {
            display: flex;
            justify-content: space-between;
            align-items: center;
            .left {
                flex: auto;
                input {
                    width: 100%;
                }
            }
            .right {
            }
        }
        .next {
            .left {
                text-align: left;
            }
        }
        .content {
            textarea {
                width: 100%;
                min-height: 100px;
            }
        }
    }
    </style>
    

    dialog.vue

    <template>
      <div class="dialog" v-if="$store.state.showDialog">
        <div class="form">
          <div class="block">
            <div class="head">
              <div class="left">
                  <input class="title" v-model="form.title" />
              </div>
              <div class="right">
                  <select v-model="form.categoryId">
                    <option value = 0>生活</option>
                    <option value = 1>学习</option>
                    <option value = 2>娱乐</option>
                  </select>
                  <button @click="save">保存</button>
                  <button @click="cancle">取消</button>
              </div>
            </div>
            <div class="content">
                <textarea v-model="form.content">内容</textarea>
            </div>
          </div>
        </div>
      </div>
    </template>
    
    <script lang="ts">
    import { Component, Prop, Vue, Watch } from 'vue-property-decorator';
    import Block from "@/components/Block.vue";
    import itemData from "@/store/itemData.ts";
    import category from  "@/store/enum.ts";
    import ItemData from '@/store/itemData.ts';
    
    @Component({
        components: { Block }
    })
    export default class Dialog extends Vue {
      form: ItemData = new ItemData(-1,0);
      created() {
        if(this.$store.state.editId) {
          this.form = this.$store.state.transData;
        }
      }
      @Watch("$store.state.editId") editId() {
        this.form = new ItemData(-1,0);
        if(this.$store.state.editId) {
          this.form = this.$store.state.transData;
        }
      }
      save() {
        if(this.form && this.form.categoryId > -1 && this.form.content.trim().length > 0 && this.form.title.trim().length > 0 ) {
          this.form.categoryId = Number(this.form.categoryId);
          if(!this.$store.state.editId) {
            this.$store.state.dataAction.addData(this.form);
          } else {
            this.$store.state.dataAction.editData(this.form);
          }
          this.$store.state.showDialog = false;
        } else {
          window.alert("输入未完成");
        }
      }
      cancle() {
        this.$store.state.showDialog = false;
      }
    }
    </script>
    <style lang="scss" scoped>
    .dialog {
      position: fixed;
      left: 0;
      top: 0;
      width: 100%;
      height: 100%;
      background: rgba(0,0,0, 0.3);
      .form {
        width: 100%;
        height: 100%;
        display: flex;
        justify-content: center;
        align-items: center;
        .block {
          .head {
            display: flex;
            justify-content: space-between;
            align-items: center;
            .left {
                flex: auto;
                margin-right: 10px;
                input {
                    width: 100%;
                }
            }
            .right {
            }
          }
          .content {
              textarea {
                  width: 100%;
                  min-height: 100px;
              }
          }
        }
      }
    }
    </style>
    
    
    展开全文
  • Android-TodoList 一个简单而基本的Android待办事项清单。 该应用程序使用以下方式存储和加载数据: SQLite的 内容提供商 装载机 更改用户界面: 工具栏取代了ActionBar RecyclerView取代了以前的ListView 浮动...
  • 使用jQuery及javascript,配合HTML5的本地存储localStorage,实现待办事项列表todoList的页面及程序控制逻辑,完成todolist程序的编写。
  • Vue3 TodoList示例 技术栈 vue3.0 恶作剧 尾风
  • 可用作 PyCharm 的 ToDoList 任务提供程序的服务器 要求: (版本 >= 2.6) (版本 >= 2.7) (版本 >= 6.7) 用法: 这个 Python 脚本在选定的端口上运行一个简单的服务器,可以从 PyCharm 查询以获取 ToDoList...
  • Todolist-源码

    2021-03-14 18:49:13
    Todolist是一个免费的桌面应用程序,可让您以快速简便的方式组织任务 特征 拖放优先 日历可浏览您的所有任务 鼠标手势快速浏览 筛选器 标签 颜色定制 导出到剪贴板 自动更新 资料下载 Todolist适用于Mac,Windows和...
  • Vue TodoList完整案例

    2018-09-05 23:01:22
    案例根据 http://todomvc.com/examples/vue/ 编写 完成功能:完成了所有的功能,如:添加、双击修改、ESC键取消编辑、清除所有已完成任务、一键全选任务、自动聚焦,本地保存等等。
  • 微信小程序ToDolist

    2019-08-10 06:53:22
    微信小程序のToDolist
  • 简单的Todolist后端 这些是todolist应用程序的后端api的存储库。 用expressjs和mysql创建 如何使用 首先,您需要创建名称为db_todo的数据库,然后将sql文件导入到根文件夹中 其次,检查connection.js文件,并确保您...
  • 微信小程序TodoList

    2019-08-10 07:32:25
    微信小程序TodoList
  • todolist.zip

    2020-05-05 19:19:40
    最近有位老师让我做的,图片在下面,做了4个多小时,ui有的简陋,可以再美化一下,这个会更好看,毕竟我也不是专业前端,测试网站http://todolist.sshouxin.top/使用的是thinkphp5.1的框架,叙述博客:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,354
精华内容 7,341
关键字:

todolist