vue 自定义属性判断点击每个item 显示隐藏

用到的知识点有循环读出列表 v-for  map 或 vue.set

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<!DOCTYPE html>
<html ng-app="app">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>点击显示隐藏</title>
</head>
<style type="text/css">
    .item {
      border:1px solid #333;
      padding:10px 20px;
      margin:5px;
      background-color: #f5f5f5; 
    }
    .item-bd {
        display: none;
    }
    .item.open .item-bd {display: block;}
</style>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.0.3/vue.js"></script>
  <div id="list">
    <div class="item" v-for="(item, index) in items" @click="toggle(item)" :class="{'open':item.show}">
        <div class="item-hd">{{index+1}}</div>
        <div class="item-bd">{{item.content}}</div>
    </div>
    </div>
    <script type="text/javascript">
        var data =  [{
          content: 'aaaaaaaaaa',
        }, {
          content: 'bbbbbbbbbb',
        }, {
          content: 'cccccccccc',
        }];
        data.map(function(item){
          item.show = false;
        });
        new Vue({
            el: '#list',
            data : {
                items: data
            },
            methods: {
            toggle: function(item) {
              item.show = !item.show;
            }
          }
        })
    </script>
</body>
</html>

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<!DOCTYPE html>
<html ng-app="app">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>点击显示隐藏</title>
</head>
<style type="text/css">
    .item {
      border:1px solid #333;
      padding:10px 20px;
      margin:5px;
      background-color: #f5f5f5; 
    }
    .item-bd {
        display: none;
    }
    .item.open .item-bd {display: block;}
</style>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.0.3/vue.js"></script>
  <div id="list">
    <div class="item" v-for="(item, index) in items" @click="toggle(item)" :class="{'open':item.show}">
        <div class="item-hd">{{index+1}}</div>
        <div class="item-bd">{{item.content}}</div>
    </div>
    </div>
    <script type="text/javascript">
        var data =  [{
          content: 'aaaaaaaaaa',
        }, {
          content: 'bbbbbbbbbb',
        }, {
          content: 'cccccccccc',
        }];
        data.map(function(item){
          item.show = false;
        });
        new Vue({
            el: '#list',
            data : {
                items: [{
                  content: 'aaaaaaaaaa',
                }, {
                  content: 'bbbbbbbbbb',
                }, {
                  content: 'cccccccccc',
                }]
            },
            methods: {
            toggle: function(item) {
              Vue.set(item,'show',this.show=!this.show);
            }
          }
        })
    </script>
</body>
</html>

  

 

posted @   MissBean  阅读(7207)  评论(0)    收藏  举报
点击右上角即可分享
微信分享提示