• Vue.js常用指令总结


    一、v-html

    转义输出,也就是可以解析 xml 数据

      1 <body>
      2     <div id="app">
      3         <p v-html="xml"></p>
      4         <p v-html="info"></p>
      5     </div>
      6 </body>
      7 <script src="../../lib/vue.js"></script>
      8 <script>
      9     new Vue({
     10         el: '#app',
     11         data: {
     12             info: 'NBA事件',
     13             xml: '<font style = "color: red;"> xml数据 <font>',
     14         }
     15     })
     16 </script>

    效果:

    image

    二、v-text

    非转义输出,也就是无法解析 xml 类型数据,v-text可以简写为{{}},并且支持逻辑运算

      1 <body>
      2     <div id="app">
      3         <p v-text="info"></p>
      4         <p v-text="xml"></p>
      5     </div>
      6 </body>
      7 <script src="../../lib/vue.js"></script>
      8 <script>
      9     new Vue({
     10         el: '#app',
     11         data: {
     12             info: 'NBA事件',
     13             xml: '<font style = "color: red;"> xml数据 <font>',
     14         }
     15     })
     16 </script>
     17 

    效果:image

    三、v-bind

    v-bind  主要用于属性绑定,比方你的class属性,style属性,value属性,href属性等等,只要是属性,就可以用v-bind指令进行绑定。

    格式:       v-bind:attr = 数据

    简写形式   :attr = 数据

      1 <body>
      2   <div id="app">
      3     <img v-bind:src="img" alt="">
      4     <img :src="img" alt="">
      5 
      6     <h3> 类名的绑定 - 对象形式 </h3>
      7       <p :class = "{size: true,red: redFlag,blue: blueFlag}"></p>
      8       <p class = "font" :class = "{size: true,red: redFlag,blue: blueFlag}"> Wset </p>
      9     <h3> 类名的绑定 - 数组形式 </h3>
     10       <p :class = "['size','red']"></p>
     11       <p :class = "[class1,class3]"></p>
     12 
     13     <h3> 样式的绑定 - 对象形式 </h3>
     14       <p :style = "{
     15          '100px',
     16         height: '100px',
     17         background: 'yellow'
     18       }"></p>
     19       <p :style = "styleObj1"></p>
     20     <h3> 样式的绑定 - 数组形式 </h3>
     21       <p :style = "[{
     22          '200px',
     23         height: '200px'
     24       },{
     25         background: 'purple'
     26       }]"></p>
     27       <p :style = 'styleObj2'></p>
     28       <a :href=" url "> 百度 </a>
     29     </div>
     30 </body>

    四、v-model

    双向数据绑定model和view中的值进行同步变化

      1 <body>
      2     <div id="app">
      3         <input type="text" v-model="msg">
      4         <p> {{ msg }} </p>
      5     </div>
      6 </body>
      7 <script src="../../../lib/vue.js"></script>
      8 <script>
      9     new Vue({
     10         el: '#app',
     11         data: {
     12             msg: 'Hello Vue'
     13         }
     14     })
     15 </script>

    五、条件渲染

    v-if

    v-if指令。其作用就是根据表达式的值true或false在DOM中生成或者移除一个元素(或多个元素)

    v-else-if

    v-else-if是在vue.js2.1.0中新增的,用作v-if的else-if块,可以链式的多次使用

    v-else

    使用 v-else 指令来表示 v-if 的“else 块”,但是必须紧跟在v-if或者v-else-if后面搭配一起使用

    v-show(条件展示)

    v-show指令是用来控制dom元素显示和隐藏的

    v-if 和 v-show  
    1. 效果看起来一样
    2. 区别:
      v-if控制的是元素的存在与否
      v-show控制的是元素的display:none属性
    频繁切换用  v-show,如果不是很频繁的切换,用 v-if   
    
    
      1 <body>
      2     <div id="app">
      3         <h3> v-show </h3>
      4         <p v-show="f"> 昨天很累 </p>
      5         <h3> v-if - 单路分支 </h3>
      6         <p v-if="f"> 今天很嗨 - 放假了 </p>
      7         <h3> v-if - 双路分支 </h3>
      8         <p v-if="f"> A </p>
      9         <p v-else> B </p>
     10         <h3> v-if - 多路分支 </h3>
     11         <input type="text" v-model="type">
     12         <p v-if=" type == 'A' "> A </p>
     13         <p v-else-if=" type == 'B' "> B </p>
     14         <p v-else> C </p>
     15     </div>
     16 </body>
     17 <script src="../../lib/vue.js"></script>
     18 <script>
     19     new Vue({
     20         el: '#app',
     21         data: {
     22             f: true,
     23             type: 'A'
     24         }
     25     })
     26 </script>
    六、v-for
    用于渲染列表

    列表渲染参数可以写三个,分别为 item key index列表渲染,要在渲染的元素身上加一个key,作为这个元素唯一的标识原因:key是唯一标识,删除列表某一项时,下一项不会继承被删项的样式。循环嵌套式,参数名称是可以一致的in / of 都可以使用

     
      1 <body>
      2   <div id="app">
      3     <ul>
      4       <li v-for = "(item,index) of arr" :key = "index">
      5         {{ item }} -- {{ index }}
      6       </li>
      7     </ul>
      8 
      9     <ul>
     10       <li v-for = " item in 10" > {{ item }} </li>
     11     </ul>
     12 
     13     <ul>
     14       <li v-for = "(item,key,index ) in obj" :key = "item.card">
     15         <p> item -- {{ item }} --  key -- {{ key }} -- index -- {{ index }}</p>
     16       </li>
     17     </ul>
     18 
     19     <ul>
     20       <li v-for = 'item in json' :key = "item.id">
     21         <h3> {{ item.type }} </h3>
     22         <ul>
     23           <li v-for = "brand in item.brands" :key = 'brand.id'>
     24             <p> {{ brand.type }} </p>
     25           </li>
     26         </ul>
     27       </li>
     28     </ul>
     29 
     30   </div>
     31 </body>
     32 <script src="../../lib/vue.js"></script>
     33 <script>
     34   /* movies 全局变量 */
     35   new Vue({
     36     el: '#app',
     37     data: {
     38       arr: [1,2,3,4],
     39       obj: {
     40         card: 1,
     41         name: 'huangfengfeng',
     42         age: 16,
     43         sex: 'man'
     44       },
     45       json: [
     46         {
     47           id: 1,
     48           type: '笔记本',
     49           brands: [
     50             {
     51               id: 1,
     52               type: '苹果'
     53             },
     54             {
     55               id: 2,
     56               type: '戴尔'
     57             },
     58             {
     59               id: 3,
     60               type: '联想'
     61             },
     62             {
     63               id: 4,
     64               type: '雷蛇'
     65             }
     66           ]
     67         },
     68         {
     69           id: 2,
     70           type: '手机',
     71           brands: [
     72             {
     73               id: 1,
     74               type: '华为'
     75             },
     76             {
     77               id: 2,
     78               type: '小米'
     79             },
     80             {
     81               id: 3,
     82               type: '联想'
     83             },
     84             {
     85               id: 4,
     86               type: 'vivo'
     87             }
     88           ]
     89         }
     90       ]
     91     }
     92   })
     93 </script>
    image
    七、v-on

    v-on 指令用于绑定HTML事件

    v-on:click = "方法名称"  简写为  @click = "方法名称"

    事件处理程序我们都放在了methods选项中

      1 <body>
      2   <div id="app">
      3     <button v-on:click = "incremnt"> 点击 </button>
      4     <button @click = "incremnt"> 点击 </button>
      5     <p> {{ count }} </p>
      6   </div>
      7 </body>
      8 <script src="../../lib/vue.js"></script>
      9 <script>
     10   new Vue({
     11     data: {
     12       count: 0
     13     },
     14     el: '#app',
     15     methods: {
     16       incremnt () {
     17         this.count ++
     18       }
     19     }
     20   })
     21 </script>

     

      1  <button @click = "arguEventHandler( n,$event )"> 事件参数里面有事件对象 </button>

    事件参数里有事件对象要用$event

    发布自定义事件:

      1 var vm = new Vue({

    定义事件:vm.$on( 事件名称,事件处理程序 )

    触发事件:vm.$emit(事件名称,事件参数)

    发布:

      1    vm.$on('aa',function ( val ) {
      2       console.log( 'aa' + val )
      3     })

    Vue中:

      1  methods: {
      2       myEvent () {
      3         vm.$emit('aa',20000)
      4       },

    触发:

      1 <button @click = "myEvent"> 自定义事件 </button>

    或者:

      1 vm.$emit('aa', 100)

    vm是一个全局变量,任何位置都能访问到,推荐使用

    事件修饰符:

    事件修饰符是用来修饰事件的,它的作用是更加便捷的来使用一些重复的代码,比如时间冒泡的阻止

    .self:只能自己触发

      1  <div class="small" @click.self="smallHandler"></div>

    按键修饰符:

    用来修饰键盘事件

    .enter(.13):键盘回车

      1         <input type="text" @keyup.enter="getInputVal">
      2         <input type="text" @keyup.13="getInputVal">

     

    八、v-pre

    把标签内部的元素保留原格式输出

    九、v-cloak

    防闪烁

    十、v-once

    只加载一次 ,如果用到事件中就是事件只执行一次

    十一、自定义指令

    全局定义

    Vue.directive( 指令名称, 指令的配置选项 )

    每个选项中都有四个参数

    bind: function (a,b,c,d){}当指令一写到dom元素中就触发了

    inserted: function(elm,b,c,d){}当指令绑定的dom元素插入到页面时就触发了

    el就是插入到页面的元素

    b为钩子函数

    b里有修饰符

    b.modifiers.stop(true或false)

    通过修饰符控制触发某些事件

    b里还有value值

    b.value=’

    c为vNode

    d为oldVNode

      1     Vue.directive(指令名称, 指令的配置选项)
      2         /*  v-focus  */
      3     Vue.directive('focus', {
      4         /* 每一个选项中都有四个参数 */
      5         bind: function() { //当指令绑定到dom元素时触发
      6             console.log('bind')
      7         },
      8         inserted: function(el, b, c, d) { // 当指令绑定的dom元素插入页面时触发
      9             console.log("兵哥: el", el) //这个就是指令绑定的dom
     10             el.focus()
     11                 // el.style.background = 'red'
     12             console.log("兵哥: b", b)
     13             if (b.modifiers.stop) {
     14                 //true 
     15                 el.style.background = 'green'
     16             } else {
     17                 //false 
     18                 el.style.background = 'red'
     19             }
     20 
     21             el.value = b.expression
     22             console.log("兵哥: c  -  vNode", c)
     23             console.log("兵哥: d  - oldVNode", d)
     24         }
     25     })
     26 

    局部定义

      1 new Vue({
      2     el: '#app',
      3     data: {
      4       info: '焦点'
      5     },
      6     directives: {
      7       // 指令名称:选项
      8       'my-focus': {
      9         inserted: function ( el ) {
     10           el.focus()
     11         }
     12       }
     13     }
     14   })
     

     

    每天都要努力微笑,努力学习,每一天都要对得起自己。
  • 相关阅读:
    leetCode 87.Scramble String (拼凑字符串) 解题思路和方法
    《代码阅读》读书笔记(一)
    用VMware 8安装Ubuntu 12.04具体过程(图解)
    模板方法
    POJ 2528 Mayor&#39;s posters 离散化+线段树
    <Linux> Xen虚拟机镜像的安装
    Android中的动画详解系列【2】——飞舞的蝴蝶
    jQuery:多个AJAX/JSON请求对应单个回调
    Android中的动画详解系列【1】——逐帧动画
    Android自定义组件系列【4】——自定义ViewGroup实现双侧滑动
  • 原文地址:https://www.cnblogs.com/likecn/p/11715665.html
Copyright © 2020-2023  润新知