vue学记笔记(二) 基本指令

Vue 基本指令

(1) v-text

  • 它的作用就是里面有 HTML 代码的话也不转义直接显示
<html>
  <head>
    <title></title>
    <script src="https://unpkg.com/vue"></script>
  </head>
  <body>
    <div id="app">
      <p v-text="msg"></p>
    </div>
    <script type="text/javascript">
      var app = new Vue({
        el: '#app', //element
        data: {
          msg: '<strong>Hello</strong> Vue!'
        }
      })
    </script>
  </body>
</html>
  • 渲染的结果就是<strong>Hello</strong> Vue! 一个字符串

(2) v-html

  • 它的作用就是绑定 html 属性把里面的 html 代码渲染出来
<html>
  <head>
    <title></title>
    <script src="https://unpkg.com/vue"></script>
  </head>
  <body>
    <div id="app">
      <p v-html="msg"></p>
    </div>
    <script type="text/javascript">
      var app = new Vue({
        el: '#app', //element
        data: {
          msg: '<strong>Hello</strong> Vue!'
        }
      })
    </script>
  </body>
</html>
  • 渲染结果就是 Hello Vue!

(3) v-if 判断

  • (i) 真就渲染 假就不渲染,假的话就是根本没有这个 dom
<html>
  <head>
    <title></title>
    <script src="https://unpkg.com/vue"></script>
  </head>
  <body>
    <div id="app">
      <p v-if="flag">不渲染</p>
    </div>
    <script type="text/javascript">
      var app = new Vue({
        el: '#app', //element
        data: {
          flag: false
        }
      })
    </script>
  </body>
</html>
  • 这样结果就是不渲染,移除了 DOM

  • (ii) 有 if 就会有 v-else

<html>
  <head>
    <title></title>
    <script src="https://unpkg.com/vue"></script>
  </head>
  <body>
    <div id="app">
      <p v-if="flag">不渲染</p>
      <p v-else>最后的结果</p>
    </div>
    <script type="text/javascript">
      var app = new Vue({
        el: '#app', //element
        data: {
          flag: false
        }
      })
    </script>
  </body>
</html>
  • 这里 v-if,v-else 要紧贴着使用,不然会报错误,v-if 显示 v-else 隐藏。v-if 隐藏 v-else 就显示

  • (3) v-else-if

<html>
  <head>
    <title></title>
    <script src="https://unpkg.com/vue"></script>
  </head>
  <body>
    <div id="app">
      <p v-if="show==='a'">渲染A</p>
      <p v-else-if="show==='b'">渲染B</p>
      <p v-else>渲染C</p>
    </div>
    <script type="text/javascript">
      var app = new Vue({
        el: '#app', //element
        data: {
          show: 'a'
        }
      })
    </script>
  </body>
</html>
  • 依据 show 值不同渲染不同的数据

(4) v-show

  • 它不用于 v-if ,它的作用是渲染了但是依据变量的真假来隐藏,等价于 display:none

  • 而 v-if 则是 DOM 根本不会加载

<html>
  <head>
    <title></title>
    <script src="https://unpkg.com/vue"></script>
  </head>
  <body>
    <div id="app">
      <p v-show="flag">渲染了,有DOM但是隐藏了</p>
    </div>
    <script type="text/javascript">
      var app = new Vue({
        el: '#app', //element
        data: {
          flag: false
        }
      })
    </script>
  </body>
</html>

(5) v-for

  • 列表循环
<html>
  <head>
    <title></title>
    <script src="https://unpkg.com/vue"></script>
  </head>
  <body>
    <div id="app">
      <p v-for="(content,index) in listdata" :key="index">
        这是第{{index}}数据,数据内容是{{content}}
      </p>
    </div>
    <script type="text/javascript">
      var app = new Vue({
        el: '#app', //element
        data: {
          listdata: ['第一条数据', '第二条数据', '第三条数据']
        }
      })
    </script>
  </body>
</html>
  • 必须要有:key

(6) v-once

  • 只会渲染一次,即使数据改变了他也不会改变
<html>
  <head>
    <title></title>
    <script src="https://unpkg.com/vue"></script>
  </head>
  <body>
    <div id="app">
      <p v-once="msg"></p>
    </div>
    <script type="text/javascript">
      var app = new Vue({
        el: '#app', //element
        data: {
          msg: '只渲染一次,即使改变了也不会再次渲染'
        }
      })
    </script>
  </body>
</html>

(7) v-bind

  • v-bind 绑定数据 在 Vue 中可以简写成: 可以绑定数据,也可以当作给子组件传递数据
<html>
  <head>
    <title></title>
    <script src="https://unpkg.com/vue"></script>
  </head>
  <body>
    <div id="app">
      <p :class="[flag?'active':'']"></p>
    </div>
    <script type="text/javascript">
      var app = new Vue({
        el: '#app', //element
        data: {
          flag: true
        }
      })
    </script>
  </body>
</html>
  • flag 要是真就加载 active 的类名 flag 要是假就加载空

  • 动态 class 几种方式

  • (1)最简单的 flag 为真就加载 active 为假就不渲染

<html>
  <head>
    <title></title>
    <script src="https://unpkg.com/vue"></script>
  </head>
  <body>
    <div id="app">
      <p :class="{'active':flag}"></p>
    </div>
    <script type="text/javascript">
      var app = new Vue({
        el: '#app', //element
        data: {
          flag: true
        }
      })
    </script>
  </body>
</html>
  • (2)依据条件来加载,flag 要是-1 就加载,要不是就不加载
<html>
  <head>
    <title></title>
    <script src="https://unpkg.com/vue"></script>
  </head>
  <body>
    <div id="app">
      <p :class="{'active':flag==-1}"></p>
    </div>
    <script type="text/javascript">
      var app = new Vue({
        el: '#app', //element
        data: {
          flag: -1
        }
      })
    </script>
  </body>
</html>
  • (3) 绑定并判断多个,属性名就是类名,值就是判断条件
<html>
  <head>
    <title></title>
    <script src="https://unpkg.com/vue"></script>
  </head>
  <body>
    <div id="app">
      <p :class="{'active':flag,'sort':flagsort}"></p>
    </div>
    <script type="text/javascript">
      var app = new Vue({
        el: '#app', //element
        data: {
          flag: -1
          flagsort:true
        }
      })
    </script>
  </body>
</html>

(8) v-on

  • 监听事件 可以简写成@

  • v-on:click 可以简写成@click

<html>
  <head>
    <title></title>
    <script src="https://unpkg.com/vue"></script>
  </head>
  <body>
    <div id="app">
      <p @click="change">点击我弹出来</p>
    </div>
    <script type="text/javascript">
      var app = new Vue({
        el: '#app', //element
        methods: {
          change() {
            window.alert('弹出来')
          }
        }
      })
    </script>
  </body>
</html>

(9) v-model

  • 数据的双向绑定 一般结合 input textarea 使用的修饰符可以有.lazy , .number, .trim
<html>
  <head>
    <title></title>
    <script src="https://unpkg.com/vue"></script>
  </head>
  <body>
    <div id="app">
      <input v-model="inputdata" type="text" />
    </div>
    <script type="text/javascript">
      var app = new Vue({
        el: '#app', //element
        data: {
          inputdata: '获取到数据'
        }
      })
    </script>
  </body>
</html>

文章作者: 雾烟云
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 雾烟云 !
  目录