• 【vue】指令


    简介

    指令 (Directives) 是带有 v- 前缀的特殊 attribute。指令 attribute 的值预期是单个 JavaScript 表达式 (v-for 是例外情况,稍后我们再讨论)。指令的职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。

    内容

    官方API文档给出的指令有14个,包括了我们之前学习过的v-once,v-html,以及v-text,v-show,v-if,v-else,v-else-if,v-for,v-on,v-bind,v-model,v-slot,v-pre,v-cloak。我们简单的学习几个,其他的后面会陆续学习到。
    • v-text

      更新元素的textcontent,和双大括号的文本插值是一样的效果。但是v-text没有{{value}}插值灵活,因为他是作用于元素之上,如果只是更新部分文本的话,双大括号会更加方便。

      example:

       <div id="app">
       <!-- 这是一组相同结果的 -->
       <p v-text="message"></p>
       <p>{{message}}</p>
       <hr/>
       <!-- 这是一组部分元素更新的 -->
       <p v-text="message1"></p>
       <p>this is {{message}}</p>
      </div>
      <script type="text/javascript">
       var data = {
       	message:'maybe',
       	message1:'this is maybe'
       };
       var vm = new Vue({
       	el : '#app',
       	data : data
       })
      </script>
      

      result:

    • v-show和v-if

      v-show和v-if是一组功能比较相近的指令,他们之间的差别就是v-show指令只是让元素显示和隐藏,相当于操作的是元素的display属性;而v-if指令是决定要不要渲染这个元素。简单的来说就是如果某个变量为false,如果在v-show指令中,则这个元素存在,但是属于隐藏不可见,相当于display:none;,在v-if指定中则这个元素根本就不存在,不会渲染这个元素。

      example:

      <div id="app">
        <p v-if="show">123</p>
        <p v-show="show">123</p>
      </div>
      <script type="text/javascript">
        var data = {
        	show:false
        };
        var vm = new Vue({
        	el : '#app',
        	data : data
        })
      </script>
      

      result:

    参数指令

    一些指令能够接收一个“参数”,在指令名称之后以冒号表示,我们简单的称为普通参数指令。从 2.6.0 开始,可以用方括号括起来的 JavaScript 表达式作为一个指令的参数,我们称为动态参数指令。但是这个是有约束的,动态参数预期会求出一个字符串,异常情况下值为 null。这个特殊的 null 值可以被显性地用于移除绑定。任何其它非字符串类型的值都将会触发一个警告。下面以v-bind,v-on两个指令来做演示。
    • 普通参数指令

      example:

      <div id="app">
        <a v-bind:href="url">百度</a>
        <p v-on:click="click">点我</p>
      </div>
      <script type="text/javascript">
        var data = {
        	url:'https://www.baidu.com'
        };
        var vm = new Vue({
        	el : '#app',
        	data : data,
        	methods:{
        		click : function(){
        			alert('click');
        		}
        	}
        })
      </script>
      

      result:

    • 动态参数指令

      example:

      <div id="app">
        <a v-bind:[attr]="url">百度</a>
        <p v-on:[event]="click">点我</p>
      </div>
      <script type="text/javascript">
        var data = {
        	url:'https://www.baidu.com',
        	attr:'href',
        	event:'click'
        };
        var vm = new Vue({
        	el : '#app',
        	data : data,
        	methods:{
        		click : function(){
        			alert('click');
        		}
        	}
        })
      </script>
      

      result:

    • 动态参数及动态表达式的约束

      1. 语法约束,因为某些字符,如空格和引号,放在 HTML attribute 名里是无效的。

        example:

        <div id="app">
        <!-- 这会触发一个编译警告 -->
        <a v-bind:['at'+tr]="url">百度</a>
        <a v-bind:[at+tr]="url">百度</a>
        </div>
        <script type="text/javascript">
        var data = {
        url:'https://www.baidu.com',
        attr:'href',
        event:'click',
        at:'hr',
        tr:'ef'
        };
        var vm = new Vue({
        el : '#app',
        data : data,
        methods:{
        	click : function(){
        		alert('click');
        	}
        }
        })
        </script>
        

        result:

      2. 大小写转换,需要避免使用大写字符来命名键名,因为浏览器会把 attribute 名全部强制转为小写

        example:

        <div id="app">
        <!-- 这会触发一个编译警告,必须有个小写的href属性才能运行 -->
        <a v-bind:[Href]="url">百度</a>
        </div>
        <script type="text/javascript">
        var data = {
        url:'https://www.baidu.com',
        Href:'href'
        };
        var vm = new Vue({
        el : '#app',
        data : data,
        methods:{
        	click : function(){
        		alert('click');
        	}
        }
        })
        </script>
        

        result:

    • 修饰符

      修饰符 (modifier) 是以半角句号 . 指明的特殊后缀,用于指出一个指令应该以特殊方式绑定。例如,.prevent 修饰符告诉 v-on 指令对于触发的事件调用 event.preventDefault():

      <form v-on:submit.prevent="onSubmit">...</form>
      
    • 缩写

      v- 前缀作为一种视觉提示,用来识别模板中 Vue 特定的 attribute。当你在使用 Vue.js 为现有标签添加动态行为 (dynamic behavior) 时,v- 前缀很有帮助,然而,对于一些频繁用到的指令来说,就会感到使用繁琐。同时,在构建由 Vue 管理所有模板的单页面应用程序 (SPA - single page application) 时,v- 前缀也变得没那么重要了。因此,Vue 为 v-bindv-on 这两个最常用的指令,提供了特定简写。

      1. v-bind缩写

        <!-- 完整语法 -->
        <a v-bind:href="url">...</a>
        
        <!-- 缩写 -->
        <a :href="url">...</a>
        
        <!-- 动态参数的缩写 (2.6.0+) -->
        <a :[key]="url"> ... </a>
        
      2. v-on缩写

        <!-- 完整语法 -->
        <a v-on:click="doSomething">...</a>
        
        <!-- 缩写 -->
        <a @click="doSomething">...</a>
        
        <!-- 动态参数的缩写 (2.6.0+) -->
        <a @[event]="doSomething"> ... </a>
        
      3. example

        <div id="app">
        <!-- v-bind -->
        <a v-bind:href="url">百度</a><br/>
        <a :href="url">百度</a><br/>
        <a :[href]="url">百度</a>
        <hr/>
        
        <!-- v-on -->
            <a v-on:click="click">点我</a><br/>
            <a @click="click">点我</a><br/>
            <a @[event]="click">点我</a>
        </div>
        <script type="text/javascript">
        var data = {
          url:'https://www.baidu.com',
              href:'href',
              event:'click'
        };
        var vm = new Vue({
        el : '#app',
        data : data,
        methods:{
        	click : function(){
        		alert('click');
        	}
        }
        })
        </script>
        
      4. result





    参考资料:

    Vue官网-模板语法
    Vue视频-模板语法-插值
  • 相关阅读:
    wstngfw中配置snort
    ROUTE: route addition failed
    putty和psftp命令行参数
    a2 Bluebottle OS
    Project Oberon
    【批处理学习笔记】第二十五课:间接传递
    【批处理学习笔记】第二十四课:直接传递
    Java异常抛出及try,catch应用实例
    【Python学习笔记之二】浅谈Python的yield用法
    【批处理学习笔记】第二十三课:用户变量和变量引用
  • 原文地址:https://www.cnblogs.com/lina520/p/14267492.html
Copyright © 2020-2023  润新知