Vue双向绑定及增删查全选反选操作

html:

    <div id="app">

        <div class="add">

            <input type="text" v-model="name" @keyup.enter="add()">

            <button @click="add()" @key>添加</button>

        </div>

        <ul>

            <li v-for="(item,index) in list" :key="item.id">

                <span>{{index + 1}}</span>

                <input type="checkbox" @click="selectItem(index)" :checked="item.select" />

                {{item.name}}

            </li>

        </ul>

        <button @click="selctAll()">{{selectText}}</button>

        <button @click="removeItem()">删除</button>

    </div>

js:

var data = new Vue({

            el: "#app",

            data: {

                name: "",

                list: [

                    { id: 1, name: "angular", select: false },

                    { id: 2, name: "react", select: false },

                    { id: 3, name: "vue", select: false }

                ],

                selectText: "全选"

            },

            methods: {

                add() {

                    if (!this.name) {

                        return alert('请输入元素')

                    }

                    this.list.push({

                        id: this.list.length + 1,

                        name: this.name,

                        select: false

                    });

                    this.name = '';

                    this.selectText = '全选'

                },

                selectItem(index) {

                    this.list[index].select = !this.list[index].select;

                    var result = !this.list.some(value => value.select !== true);

                    this.selectText = result ? '反选' : '全选';

                },

                selctAll() {

                    if (this.selectText == '反选') {

                        for (let item of this.list) {

                            item.select = false;

                        }

                        this.selectText = '全选';

                    } else {

                        for (let item of this.list) {

                            item.select = true;

                        }

                        this.selectText = '反选';

                    }

                },

                removeItem() {

                    var result = this.list.some(value => value.select !== false);

                    if (!result) {

                        return alert('请选中需要删除的数据');

                    }

                    for (let i = 0; i < this.list.length; i++) {

                        if (this.list[i].select) {

                            this.list.splice(i, 1);

                            i--;

                        }

                    }

                }

            }

        })

功能实现很多种,本人前端三年开发敬意觉得这种方式企业用的比较多,应用场景比较广

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值