第5课:VUE内置指令

2018-09-03  本文已影响0人  我七

1.v-model的作用是?请使用v-model写出一个demo

作用
在表单 <input>、<textarea> 及 <select> 元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但 v-model 本质上不过是语法糖。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。
<input type="text" v-model="msg"/> {{msg}}

2.使用v-for循环写出一个demo

v-for当需要将一个数组遍历或枚举一个对象属性时使用该指令

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
  <div id="wrap">
    <ul>
      <li v-for="tips in studyMthods">{{tips.name}}</li>
    </ul>
  </div>

  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  <script>
    var app = new Vue({
      el: '#wrap',
      data:{
        //每个对象对应一个li
        studyMthods:[
          {name: '预习'},
          {name: '实践'},
          {name: '复习'}
        ]
      }
    })
  </script>
</body>
</html>

效果1
效果2

3.使用v-bind,v-on写出一个demo

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
    .box{
      height: 100px;
      width: 100px;
      margin: 20px;
      background-color: rgb(243, 42, 86);
    }
    .blueBtn{
      background-color: rgb(42, 136, 243);
    }

  </style>
</head>
<body>
  <div id="wrap">
    <p>点击下方色块会切换成蓝色</p>
    <div class="box" :class="{blueBtn: isBlue}" @click="changeBackground"></div>

  </div>

  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  <script>

    var app = new Vue({
      el: '#wrap',
      data:{
        isBlue:false
      },
      methods:{
        changeBackground: function(){
            this.isBlue = !this.isBlue
          }
        }
    })
  </script>
</body>
</html>

效果

4.v-if,v-else,v-show,v-text,v-html,v-on,v-bind,v-once,v-cloak的作用分别是什么?

v-if: 根据表达式的值的真假条件渲染元素。在切换时元素及它的数据绑定 / 组件被销毁并重建。如果元素是 <template> ,将提出它的内容作为条件块。当条件变化时该指令触发过渡效果。当和 v-if 一起使用时,v-for 的优先级比 v-if 更高,只渲染变化的元素。
提供key值可以决定是否复用该元素
v-else: 否则v-else 元素必须紧跟在带 v-if 或者 v-else-if 的元素的后面,否则它将不会被识别。
v-show: 根据条件展示元素,不同的是带有 v-show 的元素始终会被渲染并保留在 DOM 中。v-show 只是简单地切换元素的 CSS 属性 display。
注意:v-show 不支持 <template> 元素,也不支持 v-else
v-text: 解析文本 和{{ }} 作用一样
v-html: 解析html
v-on: 它用来绑定事件监听器
v-bind: 基本用途是动态更新 HTML 元素上的属性,比如 id 、class 等
v-once: 只渲染元素和组件一次。随后的重新渲染,元素/组件及其所有的子节点将被视为静态内容并跳过。这可以用于优化更新性能。
v-cloak: 解决初始化慢导致的页面闪动。[v-cloak] { display: none }一起用,这个指令可以隐藏未编译的 Mustache 标签直到实例准备完毕。

题外话

v-if 与 v-show区别
v-if 是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。

v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。

相比之下,v-show 就简单得多——不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换。

一般来说,v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好。
实时渲染用 v-if,频繁切换页面用 v-show

上一篇下一篇

猜你喜欢

热点阅读