Vue待办事项(选项卡)

这篇具有很好参考价值的文章主要介绍了Vue待办事项(选项卡)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style>
            * {
                padding: 0;
                margin: 0;
            }

            ul,
            ol {
                list-style: none;
            }

            .header {
                width: 400px;

                margin: 0px auto;
                margin-top: 50px;
                box-shadow: 1px 1px 5px 5px;
            }

            .input {
                padding: 10px;
                height: 30px;
                display: flex;
            }

            .input input {
                padding-left: 10px;
                flex: 1;
            }

            .input button {
                width: 60px;
                height: 30px;
            }

            .text {
                padding: 10px;
                display: flex;

            }

            .text .list {
                flex: 1;
                background-color: aliceblue;
                text-align: center;
                cursor: pointer;
            }

            /*     .text div:nth-child(1){
                background-color: black;
                color: white;
                
            } */
            .cart {
                padding: 10px;
            }

            .cart li {
                height: 20px;

                display: flex;
                margin-bottom: 10px;
            }

            .cart li div {
                flex: 1;
                padding-left: 10px;
            }

            .cart li input {
                height: 20px;
                width: 20px;

            }

            .clear {
                padding: 10px;
                display: flex;
            }

            .clear div {
                flex: 1;
            }

            .list.active {
                background-color: black;
                color: white;

            }
        </style>
    </head>
    <body>
        <div class="header" id="app">
            <div class="input">
                <input type="text" placeholder="请输入" ref="inputref" v-model="message" />
                <button @click="haddleadd()">添加</button>
            </div>
            <div class="text">
                <div class="list" :class="type=='all'? 'active' : '' " @click="check('all')">所有待办事项({{arr.length}})
                </div>
                <div class="list" :class="type=='some'? 'active' : '' " @click="check('some')">
                    已完成({{computetode.length}})</div>
                <div class="list" :class="type=='every'? 'active' : '' " @click="check('every')">
                    未完成({{uncomputetode.length}})</div>
            </div>
            <div class="cart">
                <!-- <h3>所有</h3> -->
                <ul>
                    <li v-for="item in currentarr" :key="item.id">
                        <input type="checkbox" v-model="item.complate" />
                        <div>{{item.text}}</div>
                        <button @click="remove(item.id)">删除</button>
                    </li>
                </ul>
            </div>
            <!-- <div class="cart">
            <h3>已完成</h3>
            <ul>
                <li v-for="item in computetode"  :key="item.id">
                    <input type="checkbox"  v-model="item.complate"/>
                    <div>{{item.text}}</div>
                    <button >删除</button>
                </li>
            </ul>
        </div>
        <div class="cart">
            <h3>未完成</h3>
            <ul>
                <li v-for="item in uncomputetode"  :key="item.id">
                    <input type="checkbox"  v-model="item.complate"/>
                    <div>{{item.text}}</div>
                    <button >删除</button>
                </li>
            </ul>
        </div> -->
            <div class="clear">
                <div></div>
                <button @click="removeall()">清除</button>
            </div>
        </div>
        <script src="lib/vue.global.js"></script>
        <script>
            var todeid = 1
        </script>
        <script>
            const {
                createApp
            } = Vue

            const app = createApp({
                data() {
                    return {
                        message: '',
                        arr: [],
                        type: 'all',
                        currentarr: []
                    }
                },
                computed: {
                    computetode() {
                        return this.arr.filter(item => item.complate == true)
                    },
                    uncomputetode() {
                        return this.arr.filter(item => item.complate == false)
                    },
                },
                methods: {
                    haddleadd() {
                        this.$refs.inputref.focus()
                        if (this.message.trim() != '') {
                            this.arr.push({
                                id: todeid++,
                                complate: false,
                                text: this.message.trim()
                            })
                        }
                        console.log(this.arr)
                    },
                    remove(id){
                       this.arr=this.arr.filter(item=>item.id!=id)
                    },
                    removeall(){
                        this.arr=[]
                    },
                    check(types) {

                        this.type = types

                    }
                },
                watch: {
                    uncomputetode() {
                        if (this.type == 'every') {
                            this.currentarr = this.uncomputetode
                        } else if (this.type == 'some') {
                            this.currentarr = this.computetode
                        } else {
                            this.currentarr =this.arr
                        }
                    },
                    type: {
                        handler(newtype) {
                            console.log(newtype)
                            switch (newtype) {
                                case 'all':
                                    this.currentarr = this.arr
                                    break
                                case 'some':
                                    this.currentarr = this.computetode
                                    break
                                case 'every':
                                    this.currentarr = this.uncomputetode
                                    break
                            }
                        },
                        immediate: true,
                    },
                }
            })
            app.mount('#app')
        </script>
    </body>
</html>文章来源地址https://www.toymoban.com/news/detail-798193.html

到了这里,关于Vue待办事项(选项卡)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【js小案例】视频倍数播放、计算机、待办事项管理

    视频倍数播放示例图:  视频倍数播放代码: 计算机效果图:  计算机代码: 待办事项管理效果图:  待办事项管理代码:

    2024年02月12日
    浏览(28)
  • 【Vue】前端级联选项的逻辑处理

    前端级联选项是指在一个选项的选择会影响到下一个选项的可用性或显示内容的情况。处理前端级联选项的逻辑通常涉及以下步骤: 1. 获取选项数据:首先,你需要获取所有级联选项的数据。这可以通过从服务器请求数据或在前端定义数据对象来完成。 2. 设置初始状态:根

    2024年02月08日
    浏览(31)
  • 前端Vue自定义等宽标签栏标题栏选项卡

    前端组件化开发:以cc-chooseTab组件为例 随着技术的发展,开发的复杂度也越来越高。传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。为了解决这个问题,前端开发社区提

    2024年02月11日
    浏览(27)
  • vue3前端开发,感受一下组合式api和VUE2选项式的差异

    vue3前端开发,感受一下组合式api和VUE2选项式的差异!今天开始,正式开始,进入学习Vue3的内容。以后代码,案例分享,都会采用组合式api的模式为大家做展示。 今天是第一节,带大家感受一下,Vue3的组合式api和之前传统的vue2版本选项式api的差别。 首先,大家需要提前使用

    2024年01月19日
    浏览(30)
  • 前端Vue自定义可自由滚动新闻栏tabs选项卡标签栏标题栏组件

    随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。 通过组件化开发,可以有效实现单独开发,单独维护,而且他们之间可以随

    2024年02月16日
    浏览(35)
  • JavaScript - 判断当前时间是否在指定区间内,例如:9:00~12:00(检查当前时间是否处于规定的两个时间段范围内),适用于 vue.js / uniapp / 微信小程序等前端项目

    例如,您想知道当前时间是否处于 9:00 ~ 12:00 时间区间内,然后根据这个判断进而实现业务逻辑。 如下示例所示, 本文提供一个函数,您只需要传入 2 个时间区间,便可得出当前时间是否在该时间区间范围内: 您可以一键复制,直接粘贴到您的项目中。 您只需要传入开始时

    2024年02月16日
    浏览(46)
  • 前端学习---vue2--选项/数据--data-computed-watch-methods-props

    写在前面: vue提供了很多数据相关的。 简单的说就是进行双向绑定的区域。 vue实例的数据对象,会把data的数据转换成getter和setter,从而可以进行响应式的变化, vue实例创建后,可以通过vm.$data.x获取data里面的x,但同时vue实例也代理了其中的对象,所以我们一般使用简单的

    2024年02月14日
    浏览(31)
  • 前端vue可以左右滚动的切换的tabs tabs选项卡 滑动动画效果 自动宽度

    前端vue可以左右滚动的切换的tabs tabs选项卡 滑动动画效果 自动宽度, 阅读全文下载完整代码请关注微信公众号: 前端组件开发 效果图如下:           #### 使用方法 ```使用方法 swiperTabList: [\\\"2023-06-10\\\",\\\"2023-06-11\\\",\\\"2023-06-12\\\",\\\"2023-06-13\\\",\\\"2023-06-14\\\",\\\"2023-06-15\\\"], //导航列表 swiperTabIdx:

    2024年02月08日
    浏览(34)
  • 前端Vue自定义商品订单tabs标题栏选项卡组件 可设置文字下划线颜色

    随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。 通过组件化开发,可以有效实现单独开发,单独维护,而且他们之间可以随

    2024年02月16日
    浏览(29)
  • 前端Vue自定义可自由滚动精美tabs选项卡标签栏标题栏 可设置背景颜色,

    前端Vue自定义可自由滚动精美tabs选项卡标签栏标题栏 可设置背景颜色, 阅读全文下载完整代码请关注微信公众号: 前端组件开发 效果图如下: 使用方法 HTML代码实现部分

    2024年02月11日
    浏览(89)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包