Vue指令相关知识点总结——v-text、v-html、v-show、v-if、v-for、v-on等

指令

​ 带有v-前缀的特殊属性。

v-text和v-html指令

​ v-text渲染文本,html代码不会被解析。

​ 和模板语法{{}}的区别:在vue没有创建时{{}}会被当成文本渲染到浏览器中。

​ v-html,如果message中有html代码,会被解析。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <p v-text="message"></p>
    <p>{{message}}</p>
    <p v-html="message"></p>
</div>
<script src="../node_modules/vue/dist/vue.js"></script>
<script>
    let vm = new Vue({
        el: '#app',
        data: {
            message: "<a href='http://www.baidu.com'>hello world</a>"
        }
    })
</script>
</body>
</html>

v-show指令

​ v-show只是去切换display属性,v-if会直接把标签除去。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <button v-on:click="fn">点击</button>
    //flag为true时显示,为false时隐藏
    <p v-show="flag">hello world</p>
</div>
<script src="../node_modules/vue/dist/vue.js"></script>
<script>
    let vm = new Vue({
        el: '#app',
        data: {
          flag: true
        },
        methods: {
            fn(){
                //点击时flag取反
                this.flag = !this.flag;
            }
        }
    })
</script>
</body>
</html>
v-if、v-else、v-else-if指令
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <button v-on:click="fn">点击生成一个分数:{{num}}</button>
    <p v-if="num >= 90">优秀</p>
    <p v-else-if="num >= 70">良好</p>
    <p v-else-if="num >= 60">及格</p>
    <p v-else>重修</p>
</div>
<script src="../node_modules/vue/dist/vue.js"></script>
<script>
    let vm = new Vue({
        el: '#app',
        data: {
            num: 0
        },
        methods:{
            fn(){
                this.num = Math.floor(Math.random() * 101);
            }
        }
    })
</script>
</body>
</html>
v-for指令

​ v-for写到哪个元素上就循环哪个元素。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <button v-on:click="fn">点击</button>
    <button v-on:click="add">增加</button>
    <ul v-show="flag">
        <li v-for="item in todos">{{item}}</li>
    </ul>
</div>
<script src="../node_modules/vue/dist/vue.js"></script>
<script>
    let vm = new Vue({
        el: '#app',
        data: {
            todos: ['恰饭','睡觉','打麻将'],
            flag: false
        },
        methods: {
            fn(){
                this.flag = !this.flag;
            },
            add(){
                this.todos.push("学习");
            }
        }
    })
</script>
</body>
</html>

​ 注:

​ 1 v-for可以打印数组下标

​ 2 可以循环对象

​ 3 可以控制循环次数

​ 4 数组更新后,页面也跟着改变

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <button v-on:click="fn">点击操作</button>
    <ul>
        <!--打印下标-->
        <li v-for="item,index in arr">{{item}}--{{index}}</li>
        <!--循环对象-->
        <li v-for="value,key in obj">{{key}}:{{value}}</li>
        <!--控制循环次数-->
        <li v-for="i in 10">{{i}}</li>

    </ul>
</div>
<script src="../node_modules/vue/dist/vue.js"></script>
<script>
    let vm = new Vue({
        el: '#app',
        data: {
            arr: [3,7,2,10,1],
            obj: {
                id: 1,
                name: 'hello',
                age: 18
            }
        },
        methods: {
            fn(){
                //增加数组元素,页面渲染也要跟着变化,要使用到变异方法
                this.arr.push(886);
            }
        }
    })
</script>
</body>
</html>
变异方法和非变异方法

​ 变异方法:执行后原来的数组被改变。

​ 非变异方法:执行后原数组不变。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <button v-on:click="fn">操作</button>
    <ul>
        <li v-for="item in arr">{{item}}</li>
    </ul>
</div>
<script src="../node_modules/vue/dist/vue.js"></script>
<script>
    let vm = new Vue({
        el: '#app',
        data: {
            arr: [4,1,7,6,9]
        },
        methods: {
            fn(){
                //1 push在数组末尾添加元素
                this.arr.push(123);
                //2 pop删除数组最后一个元素,返回值就是被删掉的元素
                this.arr.pop();
                //3 shift删除数组的第一个元素
                this.arr.shift();
                //4 unshift从数组最前面开始添加元素
                this.arr.unshift(123);
                //5 splice第一个参数表示删除或添加的起始位置,第二个参数表示删除多少个,从第三个参数开始表示添加的元素
                this.arr.splice(0,2,45,67); //[0,2)区间
                //6 sort默认按字符编码排序(里面需要传入一个函数来写排序规则)
                this.arr.sort((a,b) => {return a>b});   //升序排序
                this.arr.sort((a,b) => {return a<b});   //降序排序
                //reverse翻转数组
                this.arr.reverse();
            }
        }
    })
</script>
</body>
</html>
v-on、v-bind、v-model、v-once、v-pre、v-cloak指令

​ 1 v-on绑定事件,简写形式@

​ 2 v-bind绑定属性,简写形式:属性=’’

​ 3 v-model表单上创建数据的双向绑定

​ 4 v-once只渲染一次,这块内容就当成静态模板,不会再改变

​ 5 v-pre跳过编译,显示语法

​ 6 在vue实例未创建完成时,会出现闪烁问题,v-cloak可以配合css解决这个问题

​ 当需要隐藏的内容较多时使用v-cloak,内容较少的时候使用v-text

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        [v-cloak]{
            display: none;
        }
    </style>
</head>
<body>
<div id="app">
    <!--1   v-on绑定事件,简写形式@-->
    <button @click="fn">点击</button>

    <!--2   v-bind绑定属性,简写形式:属性=''-->
    <a :href="href">百度一下</a>

    <!--3   v-model表单上创建数据的双向绑定-->
    <!--input中的内容变化时,p标签中的内容跟着变化-->
    <button @click="add">增加</button>
    <input type="text" v-model="value">
    <p>{{value}}</p>

    <!--4   v-once只渲染一次,这块内容就当成静态模板,不会再改变-->
    <button @click="change">点击</button>
    <p v-once>{{href}}</pv>

    <!--5   v-pre跳过编译,显示语法-->
    <p v-pre="href">{{href}}</p>
    <hr>

    <!--6   在vue实例未创建完成时,会出现闪烁问题,v-cloak可以配合css解决这个问题-->
    <p v-cloak>{{href}}</p>
</div>
<script src="../node_modules/vue/dist/vue.js"></script>
<script>
    setTimeout(function(){
        let vm = new Vue({
            el: '#app',
            data: {
                href: 'http://www.baidu.com',
                value: 123
            },
            methods: {
                fn(){
                    alert("嘿嘿");
                },
                add(){
                    this.value ++;
                },
                change(){
                    this.href = 'http://www.taobao.com';
                }
            }
        });
    },50)
</script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值