首页 web前端 js教程 Vue.js常用指令的学习详解

Vue.js常用指令的学习详解

Sep 25, 2017 am 09:54 AM
javascript vue.js 详解

             Vue.js的指令是以v-开头,它们用于HTML元素,指令提供了一些特殊的特性,将指令绑定在元素上时,指令会为绑定的目标元素添加一些特殊的行为,我们可以将指令看作特殊的HTML特性。

           Vue.js提供了一些内置指令,现在来介绍一下常用的内置指令。

            v-if指令

          v-if是条件渲染指令,它根据表达式的真假来添加或删除元素,它的基本语法:v-if = "expression",expression是一个bool值的表达式,该表达式既可以是bool属性,也可以是一个返回bool的运算符,如以下代码:

              

渲染后的页面如下图:

        

通过控制台可以看到渲染的HTML代码中只包含这三个<h1>元素,如下图:

          

也可以在控制台上修改data属性的值,比如将yes的值改为false,即 vm.yes = false,那么页面中的Yes就会被删除,vm作为vue的实例,之所以可以直接访问data里的属性是因为每个vue实例都会代理其选项对象里的data属性。

        记住:使用v-if指令时,只有表达式为真的元素才会被渲染,这是和下一个将要介绍的v-show指令的区别。

        v-show指令

        v-show指令也是条件渲染指令,刚刚也提到了v-if指令和v-show指令有一个区别,这个区别就是v-show指令的元素都会被渲染,只是表达式为假的元素会被设置css属性display:none,将其隐藏。如下图:

           

           v-else指令

           v-else指令必须跟在v-if指令或v-show指令后面,否则它无法被识别。 

         v-else指令的元素是否被渲染到HTML中主要看基于vue.js版本,如果是2.x版本,那么不管前面是v-if指令还是v-show指令,当前面指令为真时,v-else指令的元素都不会被渲染到HTML中,如果是1.x版本,取决于前面是v-if指令还是v-show指令;

         当前面是v-if指令时,且该指令为真,则v-else指令就不会被渲染到HTML中;

         当前面是v-show指令时,且该指令为真,v-else指令依然会被渲染到HTML中,只是会为其设置css属性display:none,将其隐藏;

         v-for指令

         v-for指令与javascript的遍历语法相似,即基于一个数组渲染一个列表,语法为:v-for = "item  in  items",items为数组,item为被遍历的数组元素。如以

下代码:


&lt;!DOCTYPE html&gt;&lt;html&gt;

    &lt;head&gt;
        &lt;meta charset=&quot;UTF-8&quot;&gt;
        &lt;title&gt;&lt;/title&gt;
        &lt;link rel=&quot;stylesheet&quot; href=&quot;styles/demo.css&quot; /&gt;
    &lt;/head&gt;

    &lt;body&gt;
        &lt;p id=&quot;app&quot;&gt;
            &lt;table&gt;
                &lt;thead&gt;
                    &lt;tr&gt;
                        &lt;th&gt;Name&lt;/th&gt;
                        &lt;th&gt;Age&lt;/th&gt;
                        &lt;th&gt;Sex&lt;/th&gt;
                    &lt;/tr&gt;
                &lt;/thead&gt;
                &lt;tbody&gt;
                    &lt;tr v-for=&quot;person in people&quot;&gt;
                        &lt;td&gt;{{ person.name  }}&lt;/td&gt;
                        &lt;td&gt;{{ person.age  }}&lt;/td&gt;
                        &lt;td&gt;{{ person.sex  }}&lt;/td&gt;
                    &lt;/tr&gt;
                &lt;/tbody&gt;
            &lt;/table&gt;
        &lt;/p&gt;
    &lt;/body&gt;
    &lt;script src=&quot;js/vue.js&quot;&gt;&lt;/script&gt;
    &lt;script&gt;
        var vm = new Vue({
            el: &#39;#app&#39;,
            data: {
                people: [{
                    name: &#39;Jack&#39;,
                    age: 30,
                    sex: &#39;Male&#39;
                }, {
                    name: &#39;Bill&#39;,
                    age: 26,
                    sex: &#39;Male&#39;
                }, {
                    name: &#39;Tracy&#39;,
                    age: 22,
                    sex: &#39;Female&#39;
                }, {
                    name: &#39;Chris&#39;,
                    age: 36,
                    sex: &#39;Male&#39;
                }]
            }
        })    &lt;/script&gt;&lt;/html&gt;
登录后复制

View Code

v-bind指令

v-bind指令可以在后面带一个参数,用冒号隔开,这个参数一般是HTML元素的特性(attribute),,例如:v-bind:class

如以下代码:


&lt;!DOCTYPE html&gt;&lt;html&gt;
    &lt;head&gt;
        &lt;meta charset=&quot;UTF-8&quot;&gt;
        &lt;title&gt;&lt;/title&gt;
        &lt;link rel=&quot;stylesheet&quot; href=&quot;styles/demo.css&quot; /&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;p id=&quot;app&quot;&gt;
            &lt;ul class=&quot;pagination&quot;&gt;
                &lt;li v-for=&quot;n in pageCount&quot;&gt;
                    &lt;a href=&quot;javascripit:void(0)&quot; v-bind:class=&quot;activeNumber === n + 1 ? &#39;active&#39; : &#39;&#39;&quot;&gt;{{ n + 1 }}&lt;/a&gt;
                &lt;/li&gt;
            &lt;/ul&gt;
        &lt;/p&gt;
    &lt;/body&gt;
    &lt;script src=&quot;js/vue.js&quot;&gt;&lt;/script&gt;
    &lt;script&gt;
        var vm = new Vue({
            el: &#39;#app&#39;,
            data: {
                activeNumber: 1,
                pageCount: 10
            }
        })    &lt;/script&gt;&lt;/html&gt;
登录后复制

View Code

使用v-bind指令作用于元素的class上,为当前页设置css样式。

这里要注意的是遍历pageCount时,vue,js版本的不同会导致遍历的开始不同;

当版本为1.x时,遍历是从0开始的,一直到pageCount-1结束;

当版本为2.x时,遍历是从1开始的,一直到pageCount结束。

v-on指令

v-on指令用于监听DOM事件,它的用法与v-bind类似,例如监听点击事件:v-on:click="doSomething"

有两种形式调用方法:<1>绑定一个方法,即将事件指向方法的引用

<2>使用内联语句

如下代码:Greet按钮就是使用第一种方法,即将事件绑定到greet()方法,而Hi按钮直接调用say()方法


&lt;!DOCTYPE html&gt;&lt;html&gt;
    &lt;head&gt;
        &lt;meta charset=&quot;UTF-8&quot;&gt;
        &lt;title&gt;&lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;p id=&quot;app&quot;&gt;
            &lt;p&gt;&lt;input type=&quot;text&quot; v-model=&quot;message&quot;&gt;&lt;/p&gt;
            &lt;p&gt;
                &lt;!--click事件直接绑定一个方法--&gt;
                &lt;button v-on:click=&quot;greet&quot;&gt;Greet&lt;/button&gt;
            &lt;/p&gt;
            &lt;p&gt;
                &lt;!--click事件使用内联语句--&gt;
                &lt;button v-on:click=&quot;say(&#39;Hi&#39;)&quot;&gt;Hi&lt;/button&gt;
            &lt;/p&gt;
        &lt;/p&gt;
    &lt;/body&gt;
    &lt;script src=&quot;js/vue.js&quot;&gt;&lt;/script&gt;
    &lt;script&gt;
        var vm = new Vue({
            el: &#39;#app&#39;,
            data: {
                message: &#39;Hello, Vue.js!&#39;
            },            // 在 `methods` 对象中定义方法            methods: {
                greet: function() {                    // // 方法内 `this` 指向 vm                    alert(this.message)
                },
                say: function(msg) {
                    alert(msg)
                }
            }
        })    &lt;/script&gt;&lt;/html&gt;
登录后复制

View Code

         v-bind与v-on的缩写方式

         v-bind可以缩写为一个冒号,v-on可以缩写为一个@符号,如下:

 

 

以上是Vue.js常用指令的学习详解的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Win11管理员权限获取详解 Win11管理员权限获取详解 Mar 08, 2024 pm 03:06 PM

Win11管理员权限获取详解

Oracle SQL中的除法运算详解 Oracle SQL中的除法运算详解 Mar 10, 2024 am 09:51 AM

Oracle SQL中的除法运算详解

PHP模运算符的作用及用法详解 PHP模运算符的作用及用法详解 Mar 19, 2024 pm 04:33 PM

PHP模运算符的作用及用法详解

linux系统调用system()函数详解 linux系统调用system()函数详解 Feb 22, 2024 pm 08:21 PM

linux系统调用system()函数详解

详细解析C语言学习路线 详细解析C语言学习路线 Feb 18, 2024 am 10:38 AM

详细解析C语言学习路线

简易JavaScript教程:获取HTTP状态码的方法 简易JavaScript教程:获取HTTP状态码的方法 Jan 05, 2024 pm 06:08 PM

简易JavaScript教程:获取HTTP状态码的方法

Linux的curl命令详解 Linux的curl命令详解 Feb 21, 2024 pm 10:33 PM

Linux的curl命令详解

numpy版本查询方法详解 numpy版本查询方法详解 Jan 19, 2024 am 08:20 AM

numpy版本查询方法详解

See all articles