zoukankan      html  css  js  c++  java
  • 【Vue自学笔记(二)】Vue指令

    Vue指令就是一群以v开头的指令,来实现一系列的绑定、操作。是对底层实现的封装,让HTML的编辑更加方便,丰富,也更加适合Vue。

    v-text:设置标签的文本值(textContent)

    <body>
        <div id='app'>
            <h2 v-text = "message+'!'">me</h2>
            <h2>message:{{message+"!"+'!'}}</h2>
        </div>
        <script>
            var app = new Vue({
                el: '#app',
                data: {
                    message: 'Hello Vue'
                }
            })
        </script>
    </body>
    

    效果

    v-text的值会覆盖标签的内容,同时可以做更多的扩展,让内容不再是静态的,可以跟随data中的值进行改变。{{}}也称插值表达式,是v-text的简写。

    v-html:设置标签的innerHTML

    <body>
        <div id='app'>
            <p v-html = "message">message</p>
            <p v-text = "message">message</p>
        </div>
        <script>
            var app = new Vue({
                el: '#app',
                data: {
                    message: "<a href='#'>message</a>"
                }
            })
        </script>
    </body>
    

    效果

    v-html和v-text的区别就是innerHTML和innerText的区别,v-html会将标签内容的html语言进行翻译,而v-text不会。

    v-on:为元素绑定事件

    <body>
        <div id='app'>
            <input type="button" value="v-on指令" v-on:click="dolt">
            <input type="button" value="简写指令" @click="dolt">
            <input type="button" value="双击事件" @dblclick="dolt">
            <p @click ="changeText">{{message}}</p>
        </div>
        <script>
            var app = new Vue({
                el: '#app',
                data: {
                    message: '西兰花炒蛋'
                },
                methods: {
                    dolt: function () {
                        alert("test")
                    },
                    changeText:function(){
                        this.message+="好好吃!"
                    }
                }
            })
        </script>
    </body>
    

    在Vue中,不需要取操作Dom元素,只需要更改数据,页面就会同步修改。方法的内部可以通过this来获得属性。由于是动态效果,还需要大家动手去试试,主要效果就是点击追加显示内容。@是简写

    还可以传递自定义参数

    <body>
        <div id='app'>
            <input type="button" value="点击" @click="dolt(666,'老铁')">
            <input type="text"  @keyup.enter="sayHi">
            <p @click ="changeText">{{message}}</p>
        </div>
        <script>
            var app = new Vue({
                el: '#app',
                data: {
                    message: '西兰花炒蛋'
                },
                methods: {
                    dolt: function (p1,p2) {
                        console.log("just do it")
                        console.log(p1)
                        console.log(p2)
                    },
                    changeText:function(){
                        this.message+="好好吃!"
                    },
                    sayHi:function(){
                        console.log("吃了没 ")
                    }
                }
            })
        </script>
    </body>
    

    非常简单,也和java很相似。v-on是Vue指令中非常重要的一个部分,这里介绍的很简单, 更复杂、更详细的内容,可以阅读文档https://cn.vuejs.org/v2/api/#v-on

    v-show:根据表达值的真假,切换元素的显示和隐藏

    <body>
        <div id='app'>
            <img src="img/123.jpg" alt="" v-show="true">
            <img src="img/123.jpg" alt="" v-show="message">
            <img src="img/123.jpg" alt="" v-show="age>=18">
        </div>
        <script>
            var app = new Vue({
                el: '#app',
                data: {
                    message: true,
                    age:16
                }
            })
        </script>
    </body>
    

    可以直接传入true或者false,也可以传入data中的属性,还可以传入一个表达式。

    v-if

    <body>
        <div id='app'>
            <p v-show="true">123</p>
            <p v-show="message">123</p>
            <p v-show="age>=18">123</p>
        </div>
        <script>
            var app = new Vue({
                el: '#app',
                data: {
                    message: true, 
                    age: 16
                }
            })
        </script>
    </body>
    

    if和show实现的效果一样,只是底层不同,if是通过dom树上操作元素的存在与否实现展示或者不展示。而show是通过display:none修饰的添加与否实现展示或者不展示。实际开发中需要频繁操作的元素用v-show,反之用v-if,因为操作dom树是一种对资源消耗更大的方法。

    v-bind:设置元素的属性(比如src,title,class)

    <body>
        <div id='app'>
            <img v-bind:src="imgSrc" v-bind:title="imgTitle+'!'">
            <img :src="imgSrc" v-bind:title="imgTitle+'!'">
            <img v-bind:class="isActive?'active':''">
            <img v-bind:class="{active:isActive}">
        </div>
        <script>
            var app = new Vue({
                el: '#app',
                data: {
                    imgSrc: "img/123.jpg",
                    imgTitle:"title",
                    isActive:false
                }
            })
        </script>
    </body>
    

    简单理解,就是把标签的属性也使用data中的参数进行管理,简写就是:

    v-for:根据数据生成列表结构

    <body>
        <div id='app'>
            <input type="button" value="添加参数" @click="add">
            <input type="button" value="移除参数" @click="remove">
            <ul>
                <li v-for="(item,index) in arr" :title="item">
                    {{index+1}}:hello!{{item}}
                </li>
                <li v-for="(item,index) in arrObj">
                    {{item.name}}
                </li>
            </ul>
        </div>
        <script>
            var app = new Vue({
                el: '#app',
                data: {
                    arr: [1, 2, 3, 4, 5],
                    arrObj: [{ name: "Jack" }, { name: "Tom" }]
                },
                methods:{
                    add:function(){
                        this.arrObj.push({name:"lucy"})
                    },
                    remove:function(){
                        this.arrObj.shift()
                    }
    
                }
            })
        </script>
    </body>
    

    (item,index) in arrObj是固定搭配。in不可改变,是关键字。()中如果有一个参数,则代表arrObj中的元素;如果有两个参数,则第一个代表arrObj中的元素,第二个代表元素的下标。item和index都是见名知意的命名,但是可以改变。

    v-model:获取和设置表单元素的值(双向数据绑定)

    <body>
        <div id='app'>
            <input type="text" v-model="message" @keyup.enter="sayHi">
            <p @click="changeText">click</p>
            <h2>{{message}}</h2>
        </div>
        <script>
            var app = new Vue({
                el: '#app',
                data: {
                    message: '西兰花炒蛋'
                },
                methods: {
                    dolt: function (p1, p2) {
                        console.log("just do it")
                        console.log(p1)
                        console.log(p2)
                    },
                    changeText: function () {
                        this.message += "123"
                    },
                    sayHi: function () {
                        alert(this.message)
                    }
                }
            })
        </script>
    </body>
    

    简单来说,就是将输入框和data中的元素进行绑定。data发生改变,输入框中的内容也会随之改变。反之亦然。

  • 相关阅读:
    Linux内核RPC请求过程
    二分图
    Java实现 蓝桥杯 算法提高 合并石子
    Java实现 蓝桥杯 算法提高 合并石子
    Java实现 蓝桥杯 算法提高 摩尔斯电码
    Java实现 蓝桥杯 算法提高 摩尔斯电码
    Java实现 蓝桥杯 算法提高 文本加密
    Java实现 蓝桥杯 算法提高 文本加密
    Java蓝桥杯 算法提高 九宫格
    Java蓝桥杯 算法提高 九宫格
  • 原文地址:https://www.cnblogs.com/zllk/p/14184685.html
Copyright © 2011-2022 走看看