vue中常用的系统指令

  • 插值表达式

    数据绑定最常见的形式,其中最常见的是使用插值表达式,写法是{{}} 中写表达式
    
<body>
    <div id="app">
        <p>{{name}}</p>
        <p>{{age}}</p>       
    </div>
    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                name: 'xixi',
                age: 30
            }
        })
    </script>
</body>
  • v-text

       v-text可以将一段文本渲染到指定的元素中
    
<body>
    <div id="app">
        <p v-text='name'></p>
    </div>
    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                name: 'xixixi'
            }
        })
    </script>
</body>
  • v-html

    少使用v-html指令,因为使用它很容易导致 XSS 攻击。只对可信内容使用 HTML 插值,绝不要对用户提供的内容使用插值。
    
<body>
    <div id="app">
        <p v-html='name'></p>
    </div>
    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                name: '<h1>xixixi</h1>'
            }
        })
    </script>
</body>
  • v-bind

    可以给html元素或者组件动态地绑定一个或多个特性。
    使用方式:v-bind:属性名="data里的属性"
    简写(推荐):    :属性名="data里的属性
    
  <body>
    <div id="app">
      <!-- v-bind的简写方式  :属性名=“data里面的属性” 推荐写法-->
      <img :src="image" alt="">
      <a :href="'del.php?id='+id">删除</a>
    </div>
    <script>
      var vm = new Vue({
        el: '#app',
        data: {
          name: 'jack',
          image: './head.jpg',
          id: 11
        }
      })
    </script>
  </body>
  • v-for

    v-for必须结合key属性来使用,它会唯一标识数组中的每一项,未来当数组中的那一项改变的时候,它会只更新那一项,好处就是提升性能。注意key的值唯一,不能重复
    
  注意:以下变动不会触发视图更新
      1. 通过索引给数组设置新值
      2. 通过length改变数组
    解决:
      1. Vue.set(arr, index, newValue)
      2. arr.splice(index, 1, newValue)

      v-for渲染数组          
        在标签的属性位置写上v-for="(item, index) in arr" 
        item表示数组中的每一项,这个名字可以随意取,
        arr表示需要遍历的数组
        index表示数组项的索引值
<body>
    <div id="app">       
        <h2 v-for='(item,index) in users' :key='index'>{{item.name}}:{{item.age}}索引:{{index}}</h2>
    </div>
    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                users: [{
                    name: '小红',
                    age: 12
                }, {
                    name: '小明',
                    age: 20
                }]            
            }
        })
    </script>
v-for渲染对象
    在标签的属性位置写上v-for="(value, key, index) in obj" 
    value表示对象键的值,这个名字可以随便取,
    key表示对象的键  
    index表示对象的索引值
    obj表示需要遍历的对象
<div id="app">
        <p v-for='(value,key,index) in dog' :key='index'>{{key}}:{{value}}索引:{{index}}</p>
    </div>
    <script>
        var vm = new Vue({
            el: '#app',
            data: {              
                dog: {
                    name: 'yoyo',
                    age: 2
                }
            }
        })
    </script>
  • v-model
v-model指令用来双向数据绑定:就是model和view中的值进行同步变化
在表单控件或者组件上创建双向绑定
v-model仅能在如下元素中使用:
    input
    select
    textarea
    components(Vue中的组件)
 <div id="app">
      <!-- v-model只能在input/textarea/selet -->
      <input type="text" v-model="name">
    </div>
    <script>
      var vm = new Vue({
        el: '#app',
        data: {
          name: 'jack'
        }
      })
    </script>
  • v-on
 1. v-on指令用来监听dom事件 表达式可以是一个方法的名字或一个内联语句,
  如果没有修饰符也可以省略,用在普通的html元素上时,只能监听 原生
  DOM 事件。用在自定义元素组件上时,也可以监听子组件触发的自定义事件。
 2.常用事件:
      v-on:click
      v-on:keydown
      v-on:keyup
      v-on:mousedown
      v-on:mouseover
      v-on:submit
 3.可以使用@替代 v-on:
  <button @click="doThis"></button>
 4.按键修饰符:
    触发像keydown这样的按键事件时,可以使用按键修饰符指定按下特殊的键后才触发事件
    写法:
    <input type="text" @keydown.enter="kd1">  当按下回车键时才触发kd1事件
    由于回车键对应的keyCode是13,也可以使用如下替代
    <input type="text" @keydown.13="kd1">  当按下回车键时才触发kd1事件
    但是如果需要按下字母a(对应的keyCode=65)才触发kd1事件,有两种写法:
      1、由于默认不支持a这个按键修饰符,需要Vue.config.keyCodes.a = 65 添加一个对应,所以这种写法为:

      Vue.config.keyCodes.a = 65
      <input type="text" @keydown.a="kd1">  这样即可触发

      2、也可以之间加上a对应的数字65作为按键修饰符
      <input type="text" @keydown.65="kd1">  这样即可触发

      键盘上对应的每个按键可以通过 http://keycode.info/ 获取到当前按下键所对应的数字
<div id="app">   
          <!-- 1. 在标签的属性位置写上v-on:任意的事件类型="执行的函数"  -->      
      <button v-on:click="change">点击改变</button>
       <!--  2. 简写:@任意的事件类型="执行的函数" (推荐)  -->      
      <button @click="change">简写</button>
       <!--  3. 通过执行函数添加参数  --> 
      <button @click="change1('lala')">传参</button>
       <!--   4. 通过执行函数中添加$event参数传递事件对象,注意只能是$event,并且不能加引号  --> 
      <button @click="getEvent($event)">事件对象</button>
       <!--   5. 事件修饰符可以给事件添加特殊功能 .stop .prevent  --> 
      <a href="http://www.baidu.com" @click.prevent="change">跳转</a>
       <!--  6. 可以给和按键相关的事件添加按键修饰符 常用的有 .enter  --> 
      <input v-on:keyup.13="submit">
      <input v-on:keyup.enter="submit">
    </div>
    <script>
      var vm = new Vue({
        el: '#app',
        data: {
          name: 'xixi'
        },
        // 在methods属性中定义函数
        methods: {          
            // 注意在methods中想要去获取data中的属性的话,需要加上this,this表示vue实例
           change() {
                    this.name = 'haha'
                },
           change1(n) {
                    this.name = n
                },
           getEvent(e) {
                    console.log(e);
                },
           submit() {
                    console.log('submit');
                }
        }
      })
    </script>
  • v-if
根据表达式的值的真假条件来决定是否渲染元素,如果条件为false不渲染(达到隐藏元素的目的),为true则渲染。在切换时元素及它的数据绑定被销毁并重建
    <div id="app">
      <p v-if="isShow">aaaa</p>
    </div>
    <script>
      var vm = new Vue({
        el: '#app',
        data: {
          isShow: false
        }
      })
    </script>
  • v-show
根据表达式的真假值,切换元素的 display CSS 属性,如果为false,则在元素上添加 display:none来隐藏元素,否则移除display:none实现显示元素
 <div id="app">
      <p v-show="isShow">bbbb</p>
    </div>
    <script>
      var vm = new Vue({
        el: '#app',
        data: {
          isShow: false
        }
      })
    </script>
v-if和v-show的总结:
    v-if和v-show 都能够实现对一个元素的隐藏和显示操作,
    v-if是将这个元素添加或者移除到dom中,
    v-show是在这个元素上添加 style="display:none"和移除它来控制元素的显示和隐藏的
  • v-cloak
 v-cloak指令保持在元素上直到关联实例结束编译后自动移除,v-cloak和 CSS 规则如 [v-cloak] { display: none } 一起用时,这个指令可以隐藏未编译的Mustache 标签直到实例准备完毕。
 通常用来防止{{}}表达式闪烁问题
 <style>
      [v-cloak] {
        display: none;
      }
 </style>
  <div id="app">
     <!-- 在span上加上 v-cloak和css样式控制以后,浏览器在加载的时候会先把p隐藏起来,知道 Vue实例化完毕以后,才会将v-cloak从p上移除,那么css就会失去作用而将p中的内容呈现给用户 -->
      <p v-cloak>{{msg}}</p>
    </div>
    <script>
      var vm = new Vue({
        el: '#app',
        data: {
          msg: 'hello'
        }
      })
    </script>

猜你喜欢

转载自blog.csdn.net/weixin_42442123/article/details/84639645
今日推荐