用vue和bootstrap做一个简易ToDoList

161 阅读1分钟

我正在参加 码上掘金体验活动,详情:show出你的创意代码块

前言

好久以前练手的一个demo,最近拿出来重新梳理一下,demo很简单。bootstrap好久不用了就不细说了,主要讲一讲逻辑。

添加

在输入框输入ID和Name,通过v-model双向绑定,在add函数中通过this.id,this.name访问,将新加的ToDoList以对象的方式push进ToDoList数组中去。最后将输入框清零。

add() {
    let todolist = {id:this.id,name:this.name,ctime:new Date()}
    this.list.push(todolist)
    this.id = this.name = ''
}

删除

删除ToDoList的时候需要传入待删除的元素的id以便于查询,通过Array.prototype.findIndex()方法,找到索引值相同的进行删除。

del(id) {
    let index = this.list.findIndex(item => {
        if (item.id === id) {
            return true
        }
    })
    this.list.splice(index, 1)
},

搜索

通过输入的关键字,将关键字作为函数的形参传入。通过Array.prototype.includes()方法判断ToDoList数组中是否有包含关键字的。使用filter()进行数组遍历筛选。

search(keywords) {
    return this.list.filter(item => {
        //如果包含返回true
        if (item.name.includes(keywords)) {
            return item
        }
    })
}

细节

时间

此程序中有添加事件,但是不具有存储功能。通过设置全局过滤器对时间进行展示。

Vue.filter('dateFormat',function (dateStar) {
    let dt = new Date(dateStar)
    let y = dt.getFullYear()
    let m = dt.getMonth() + 1
    let d = dt.getDate()
    return y + '-' + m + '-' + d
})

后记

这个demo有很多不完整的部分,比如对数据的存储。元素的丰富之类的。但是对于初学者练手是一个很好的选择。