Vue.js常用指令分享

一、data数据对象

        data是Vue实例的数据对象,Vue.js会将data对象的属性转换为getter/setter,从而让data的属性能够响应数据变化。

        var app= new Vue({data: {数据}}),Vue通过这种方式监听了data内的数据修改,因此,只要data内的数据进行变动,视图层就会同步自动刷新。

        data定义的数据通过插值语法(“{{}}”)绑定到DOM节点,data数据对象有以下两种写法:

1.对象的形式:

 <div id="app">
        <p>{{msg}}</p>
        <p>姓名:{{name}}年龄:{{year}}</p>
    </div>
    <script>
        var app= new Vue(
            {
                el:'#app',
                data: {
                    msg: 'hello!',
                    name:'张三',
                    year:18
                }
            }
        );
        
    </script>

2.函数的形式:

 <div id="app">
        <p>{{msg}}</p>
        <p>姓名:{{name}}年龄:{{year}}</p>
    </div>
    <script>
        var app= new Vue(
            {
                el:'#app',
                data(){
                    return:{
                        msg: 'hello!',
                        name:'张三',
                        year:18
                    }
                    
                }
            }
        );
        
    </script>

运行结果:

二、methods方法

        methods用来定义Vue实例中的方法,可以通过Vue实例直接访问这些方法。在定义的方法中,this对象指向Vue实例本身。通过methods定义的方法还可以作为页面中的事件处理方法使用,一旦事件被触发,即执行相应的方法进行处理。

        在methods方法中访问 data 的数据,可以直接通过 this.属性名 的形式来访问,this表示Vue实例

1.使用实例:

<div id="app">
        <div>
            <p>tip:点击按钮把{{msg}}字样修改为“新文本”</p>
            <button v-on:click="btnClick">点击</button>
        </div>

    </div>
    <script>
        var app = new Vue({
            el: "#app",
            data: {
                msg: "旧文本"
            },
            methods:{
                btnClick(){
                    this.msg="新文本"
                }
            }
        })
    </script>

 运行结果:

 三、常用指令

        指令(Directives)是Vue.js模板中最常用的一项功能,HTML元素仅仅是界面的呈现,若还需要和Vue实例进行交互,就需要用到Vue.js的指令。在Vue.js中,指令必须写在HTML元素中,以前缀v-开头,后缀用来区分指令的功能,前缀和后缀通过短横线连接,它是Vue实例数据与用户界面之间的纽带。

        Vue.js内置了很多指令,帮助开发者快速完成常见的DOM操作,譬如显示与隐藏、循环渲染等等,需要先了解一些常用的指令,如v-text、v-html、v-bind、v-on等。

1.v-text:

        v-text用来在DOM元素内部插入文本内容,该指令以文本的方式更新元素的内容,即使是HTML代码,它也只当做普通字符串处理,不会解析标签,与插值表达式作用相同。

<div id="app" v-text="msg"></div>
    <script>
        var app= new Vue(
            {
                el:'#app',
                data:{
                    msg:"Hello,v-text"
                },
                methods:{      
                }
            }  
        );
    </script>

运行结果:

2.v- html:

        v-html用来在DOM元素内部插入HTML代码内容。某些情况下,从服务器请求到的数据本身就是一个HTML代码,如果直接通过“{{}}”来输出,会将HTML代码也一起输出。v-html指令更新节点元素的 innerHTML ,内容按照HTML格式进行解析,并且显示对应的内容。

 <div id="app" v-html="msg"></div>
    <script>
        var app= new Vue(
            {
                el:'#app',
                data:{
                    msg:"<h1>Hello,v-text</h1>"
                },
                methods:{      
                }
            }  
        );
    </script>

运行结果:

3.v-bind: 

        v-bind指令用于实现单向动态数据绑定,除了标签内容需要动态来渲染外,某些标签的属性也希望动态来绑定,这时就可以使用v-bind动态绑定属性。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue</title>
    <script src="../vue.js"></script>
    <style>
        .box1{
            color: pink;
        }

    </style>
</head>
<body>
    <div id="app">
        <div :class="className1">{{msg}}</div>
    </div>
    <script>
        var app= new Vue(
            {
                el:'#app',
                data(){
                    return{
                        msg:"hello v-bind",
                        className1:'box1'
                    }
                },
                methods:{      
                }
            }  
        );
    </script>
</body>
</html>

运行结果:

4.v-on:

        v-on指令用来绑定事件监听器。在普通元素上,v-on指令可以监听原生的DOM事件(如click、dblclick、keyup、mouseover等)。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue</title>
    <script src="../vue.js"></script>
    <style>
        .active{
            background-color: red;
        }
        .gray{
            background-color: bisque;
        }
    </style>
</head>
<body>
    <div id="app">
        <button @click="length++">边长+1</button>
        <button @click="change1">边长+1</button>
        <button @click="change2(3)">边长+3</button>
        <button @click="change3" value="10">边长+10</button>
        <button @click="change4(3,$event)" value="100">边长+3*100</button>
        <h1>正方形的边长是{{length}}</h1>
    </div>
    <script>
        var app= new Vue(
            {
                el:'#app',
                data :function() {
                    return{
                        length:2
                    }
                },
                methods:{
                    change1(){
                        this.length++;
                    },
                    change2(n){
                        this.length+=n;
                    },
                    change3(event){
                        this.length+=Number(event.target.value);
                    },
                    change4(num,event){
                        this.length+=Number(event.target.value)*num;
                    }
                }
            }  
        );
        
    </script>
</body>
</html>

 运行结果:

 5.vo-for:

        v-for是Vue.js的循环语句,当需要遍历数组或对象时,常用的就是列表渲染指令v-for, 它需要结合着in或者of来使用。

<div id="app">
        <ul>
            <li v-for="(item,index) of school" :key="index">
                {{item}}
            </li>
        </ul>
    </div>
    <script>
        var app= new Vue(
            {
                el:'#app',
                data:{
                    school: ['小学','初中','高中','大学']
                },
                methods:{
                    
                }
            }  
        );
        
    </script>

运行结果:

 

6.v-model:

         v-model指令主要用于实现表单元素和数据的双向绑定,通常用在表单类元素上(如input、select、textarea等)。所谓双向绑定,指的就是Vue实例中的data与其渲染的DOM元素上的内容保持一致,两者无论谁被改变,另一方也会相应的同步更新为相同的数据。

<div id="app">
        <p>{{msg}}</p>
            <div>
                <p><input type="text" v-bind:value="msg" v-on:input="changMsg"></p>
                <p><input type="text" v-model="msg"></p>
            </div>
    </div>
    
    <script>
        var app= new Vue(
            {
                el:'#app',
                data :{
                    msg:"11",
                },
                methods:{
                    changMsg(e){
                        this.msg=e.target.value
                    }
                }
            }  
        );
        
    </script>

运行结果:

7.v- if和v-else

         v-if是Vue.js的条件语句,v-if指令用于条件性地渲染一块内容,这块内容只会在指令的表达式返回 true 值的时候被渲染。特别注意的是,v-if所关联的是Vue.js的动态变量。

<div id="app">
        <p v-if="seen">1</p>
        <p v-else>0</p>

        <p v-if="score>=90">优秀</p>
        <p v-else-if="score>=80">良好</p>
        <p v-else-if="score>=70">一般</p>
        <p v-else>0</p>
        
       
    </div>
    
    <script>
        var app= new Vue(
            {
                el:'#app',
                data :{
                    seen: true,
                    score:90,
                },
                methods:{
                    
                }
            }  
        );
        
    </script>

运行结果:

8、v-show

        v-show是另一个条件渲染语句,用于根据条件展示元素,用法与v-if大致一样。

        带有v-show的元素始终会被渲染并保留在DOM中,v-show指令使用css样式来控制元素的显示/隐藏。值得注意的是,注意,v-show不支持<template>元素,也不支持v-else。

<div id="app">
        <p v-show="seen">3</p>
        <p v-show="!seen">4</p>
    </div>
    
    <script>
        var app= new Vue(
            {
                el:'#app',
                data :{
                    seen: true
                },
                methods:{
                    
                }
            }  
        );
        
    </script>

运行结果:

  • 51
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值