周记随笔4

2019.12.18,天气晴,最近升温太厉害,感觉已经快到夏天了。。。

目录

讲点vue中的样式(1min)

关于v-for(30s)

讲点v-for喜欢出错的情况吧(3min)


讲点vue中的样式(1min)

在vue中,可以不用<div class="aaa bbb"></div>

用<div :class="['aaa','bbb']"></div>

比如:

  <style>
    .red {
      color: red;
    }

    .thin {
      font-weight: 200;
    }

    .italic {
      font-style: italic;
    }

    .active {
      letter-spacing: 0.5em;
    }
  </style>
<body>
  <!-- 第一种使用方式,直接传递一个数组,注意: 这里的 class 需要使用  v-bind 做数据绑定 -->
    <h1 :class="['thin', 'italic']">这是一个很大很大的H1,大到你无法想象!!!</h1>
</body>

当然也可以在:class中有三目运算符了

<!-- 在数组中使用三元表达式 -->
<h1 :class="['thin', 'italic', flag ? 'active' : '']">这是一个很大很大的H1,大到你无法想象!!!</h1>

如果flag为true就会使用.active样式,否则为空不使用.active

又或者

    <!-- 在数组中使用 对象来代替三元表达式,提高代码的可读性 -->
    <h1 :class="['thin', 'italic', {'active':flag} ]">这是一个很大很大的H1,大到你无法想象!!!</h1>

和上面一样的意思

或者直接用对象控制样式


  <style>
    .red {
      color: red;
    }

    .thin {
      font-weight: 200;
    }

    .italic {
      font-style: italic;
    }

    .active {
      letter-spacing: 0.5em;
    }
  </style>


<body>
  <div id="app">
    <!-- 在为 class 使用 v-bind 绑定 对象的时候,对象的属性是类名,由于 对象的属性可带引号,也可不带引号,所以 这里我没写引号;  属性的值 是一个标识符 -->
    <h1 :class="classObj">这是一个很大很大的H1,大到你无法想象!!!</h1>


  </div>

  <script>
    // 创建 Vue 实例,得到 ViewModel
    var vm = new Vue({
      el: '#app',
      data: {
        flag: true,
        classObj: { red: true, thin: true, italic: false, active: false }
      },
      methods: {}
    });
  </script>
</body>

</html>

样式也可以在vue实例的data中写出来,如下:

<body>
  <div id="app">
    <!-- 对象就是无序键值对的集合 -->
    <h1 :style="styleObj1">这是一个h1</h1>

    <h1 :style="[ styleObj1, styleObj2 ]">这是一个h1</h1>
  </div>

  <script>
    // 创建 Vue 实例,得到 ViewModel
    var vm = new Vue({
      el: '#app',
      data: {
        styleObj1: { color: 'red', 'font-weight': 200 },
        styleObj2: { 'font-style': 'italic' }
      },
      methods: {}
    });
  </script>
</body>

==============我到底在记什么流水账?反正扫一眼就看完了,一般用第一种就行了===================

关于v-for(30s)

注意点1:记得遍历对象的时候是遍历对象里面的键值对

  <div id="app">
    <!-- 注意:在遍历对象身上的键值对的时候, 除了 有  val  key  ,在第三个位置还有 一个 索引  -->
    <p v-for="(val, key, i) in user">值是: {{ val }} --- 键是: {{key}} -- 索引: {{i}}</p>
  </div>

  <script>
    // 创建 Vue 实例,得到 ViewModel
    var vm = new Vue({
      el: '#app',
      data: {
        user: {
          id: 1,
          name: '托尼·屎大颗',
          gender: '男'
        }
      },
      methods: {}
    });
  </script>

运行结果

值是: 1 --- 键是: id -- 索引: 0

值是: 托尼·屎大颗 --- 键是: name -- 索引: 1

值是: 男 --- 键是: gender -- 索引: 2

这里v-for的in和of没区别,可以替换

注意点2:在vue中,for...in和for...of没有区别!

在js中的使用如下:

【JavaScript】for、forEach 、for in、each循环详解

【ES6】for of用法

在vue中,可参考官网

用 v-for 把一个数组对应为一组元素

注意点3:如果使用 v-for 迭代数字的话,前面的 count 值从 1 开始,不是从0开始

  <div id="app">
    <!-- in 后面我们放过  普通数组,对象数组,对象, 还可以放数字 -->
    <!-- 注意:如果使用 v-for 迭代数字的话,前面的 count 值从 1 开始 -->
    <p v-for="count in 3">这是第 {{ count }} 次循环</p>
  </div>

运行结果

这是第 1 次循环

这是第 2 次循环

这是第 3 次循环

讲点v-for喜欢出错的情况吧(3min)

<div id="app">
    <div>
      <label>Id:
        <input type="text" v-model="id">
      </label>

      <label>Name:
        <input type="text" v-model="name">
      </label>

      <input type="button" value="添加" @click="add">
    </div>

    <p v-for="item in list">
      <input type="checkbox">{{item.id}} --- {{item.name}}
    </p>
</div>

  <script>
    // 创建 Vue 实例,得到 ViewModel
    var vm = new Vue({
      el: '#app',
      data: {
        id: '',
        name: '',
        list: [
          { id: 1, name: '李斯' },
          { id: 2, name: '嬴政' },
          { id: 3, name: '赵高' },
          { id: 4, name: '韩非' },
          { id: 5, name: '荀子' }
        ]
      },
      methods: {
        add() { // 添加方法
          this.list.unshift({ id: this.id, name: this.name })
        }
      }
    });
  </script>

运行结果:

那么我们需要处理的是for循环绑定id了,解决方案如下:

    <!-- 注意: v-for 循环的时候,key 属性只能使用 number或者string类型 -->
    <!-- 注意: key 在使用的时候,必须使用 v-bind 属性绑定的形式,指定 key 的值 -->
    <!-- 在组件中,使用v-for循环的时候,或者在一些特殊情况中,如果 v-for 有问题,必须 在使用 v-for 的同时,指定 唯一的 字符串/数字 类型 :key 值 -->
    <p v-for="item in list" :key="item.id">
      <input type="checkbox">{{item.id}} --- {{item.name}}
    </p>

这样就ok了,始终跟着id勾,不会跑了

===============Talk is cheap, show me the code================

发布了209 篇原创文章 · 获赞 344 · 访问量 89万+

猜你喜欢

转载自blog.csdn.net/qq_34115899/article/details/103604460