vue2.0全选,全不选(数据有选中状态的字段时)

通过为选中状态的标签加类名checked,使其选中。子列表中所有选中,全选按钮自动选中。

需要引入vue.js

html

<div id="app">
    <div class="row">
           <div class="col-sm-3">
               <div class="relatedInstance">
                   <h2>相关实体</h2>
                   <ul>
                       <li id="" v-for="(entity,index) in entities">
                           <h3  @click="toggleBar(index)"  data-name="person">{{entity.text}}<b  :class="{'checked':entity.isChecked}" @click.stop="checkall(index)"></b>
                               <span :class="[entity.isShow?'glyphicon-minus':'glyphicon-plus']" class="glyphicon"></span></h3>
                           <ul v-show="entity.isShow">
                               <li v-for="(list,listIndex) in entity.child.list">
                                   <b  @click="checklist(index,listIndex)" :class="{'checked': list.isChosed}"></b><span @click="showkeyWord">{{list.text}}</span>
                                   <span>(630)</span>
                               </li>
                           </ul>
                           <h5 @click="morelist" v-show="" class="more" data-pages="1"><div>更多</div></h5>
                       </li>
                   </ul>

               </div>
           </div>
       </div>
  </div>


  <script src="js/vue.js"></script>
  <script>
    var newlist = new Vue({
      el:'#app',
      data:{
            entities:[
              {text:'人员',isShow:false,child:{list:[{text:'F-35 program',isChosed:false},{text:'F-35 program',isChosed:false}],isChecked:false}},
              {text:'项目',isShow:false,child:{list:[{text:'F-35 program1',isChosed:false},{text:'F-35 program2',isChosed:false}],isChecked:false}}
            ],
            // isShow: false,
            // isChecked:false,
            // isChosed:false,
            chosedList:[[],[]],
            chosedUl:'',

        },
        methods: {
            toggleBar: function(index) {
                for(var i in this.entities){
                    if(i!=index){
                        this.$set(this.entities[i],'isShow',false);
                    }
                }
                this.$set(this.entities[index],'isShow',!this.entities[index].isShow);
                this.chosedUl=this.entities[index].text;

            },
            checkall:function (index) {
                var isChecked=!this.entities[index].isChecked;

            	this.$set(this.entities[index],'isChecked',!this.entities[index].isChecked);

                for(var i in this.entities[index].child.list){
                    var dt=this.entities[index].child.list[i];
                    this.$set(dt,'isChosed',isChecked);
                    if(isChecked) this.chosedList[index].push(dt.text);

                }

                if(!isChecked) this.chosedList[index].splice(0,this.chosedList[index].length);

            },
            checklist:function (ulIndex,listIndex) {

            	var dt=this.entities[ulIndex].child.list;
                this.$set(dt[listIndex],'isChosed',!dt[listIndex].isChosed);

                if(dt[listIndex].isChosed) this.chosedList[ulIndex].push(true)
                else  this.chosedList[ulIndex].splice(ulIndex, 1);

				if(this.chosedList[ulIndex].length === dt.length) this.$set(this.entities[ulIndex],'isChecked',true);
				else this.$set(this.entities[ulIndex],'isChecked',false);

            },
            showkeyWord:function () {

            },
            morelist:function () {

            }
        },

    })
  </script>

结果



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值