3. Vue实例简介

本文详细介绍了Vue实例的创建,包括el唯一根标签的设定、data初始数据的创建与显示,以及如何通过methods定义方法、computed计算属性和watch状态监听。同时,讲解了filters过滤器在插值表达式和v-bind属性绑定中的使用。
摘要由CSDN通过智能技术生成

一、 创建Vue实例

每个Vue应用都是通过Vue构造器创建新的Vue实例开始,Vue实例的创建是通过new关键字实例化Vue({})构造函数,并传入一个选项对象,具体语法如下:

var vm=new Vue({
	//选项
});

Vue实例配置选项

选项说明
el唯一根标签
dataVue实例数据对象
methods定义Vue实例中的方法
components定义子组件
computed计算属性
filters过滤器
watch监听数据变化

二、 el唯一根标签

在创建Vue实例时,el表示唯一根标签,它会提供一个页面上已存在的DOM元素作为Vue实例的挂载目标。在实例挂载之后,元素可以用vm.$el访问。

<div id="app"></div>
var vm=new Vue({
	el:'#app'
});

三、data初始数据

3.1 数据对象基本创建与显示

3.1.1数据对象的创建

Vue实例的数据对象为data,Vue会将data的属性转换为getter、setter(理解为data对象的的属性可以被Vue设置值获取值),从而让data的属性能够响应数据变化。【对象必须是纯粹的对象(含有0个多多个key/value对)】

Vue实例创建之后,可以通过vm.$data访问原始数据对象。Vue实例也代理了data对象上所有的属性,因此访问vm.name相当于访问vm.$data.name

注意:只有当Vue实例被创建时就存在于data中的属性才是响应式的,后加入的data属性将不会触发视图的更新,如后续需要触发视图更新的属性,需要在创建实例时就设为属性值为空。

<div id="app">
	<p>{{name}}</p>
</div>
var vm=new Vue({
	el:'#app',
	data:{
		name:'创建Vue实例成功!'//data对象中的name属性是响应式的
	}
});

3.1.2 数据对象在视图中的显示

数据绑定最常见的形式就是使用“Mustache”语法 (双大括号) 的文本插值。

<div id="app">
	<p>{{name}}</p>
</div>

Mustache 标签将会被替代为对应数据对象上 name属性的值。无论何时,绑定的数据对象上name属性发生了改变,插值处的内容都会更新。

3.2 数据与视图更新的123

对于已经创建的实例,Vue 不允许动态添加根级别的响应式 property。但是可以使用 vm.object.propertyName=valueVue.set(object, propertyName, value)方法向嵌套对象添加响应式 property。

<div id="app">
	<h1>{{obj.name}}</h1>
	<p>{{obj.msg}}</p>
</div>
var vm=new Vue({
	el:'#app',
	data:{
		obj:{
			name:'章三',
		}
	}
});
vm.obj.msg='hi';//vm.object.propertyName=value方式给Vue实例vm添加数据,不会更新视图
Vue.set(vm.obj,'msg','hi');//Vue.set(object, propertyName, value)方式给Vue实例vm添加数据,会更新视图

四、methods定义方法

methods属性用来定义方法,这些方法可以直接通过vm实例访问或者在指令表达式中使用。方法中的this自动绑定为Vue实例。

<div id="app">
   <button @click="showInfo">请单击</button>
    <p>{{msg}}</p>
</div>
var vm = new Vue({
        el:'#app',
        data:{
           msg:''
        },
        methods:{
            showInfo:function () {
                this.msg='触发了单击是阿金啊'
            }
        }
    });

五、computed计算属性

如果有一些数据需要随着其他数据变动而变动时,就需要使用computed计算属性。
通过计算属性的结果会被缓存,除非依赖的响应式 property 变化才会重新计算。注意,如果某个依赖 (比如非响应式 property) 在该实例范畴之外,则计算属性是不会被更新的。

<div id="app">
    <p>总价格{{totalPrice}}</p>
    <p>单价:{{price}}</p>
    <p>数量{{num}}</p>
    <div>
        <button @click="num==0?0:num--">减少数量</button>
        <button @click="num++">增加数量</button>
    </div>
</div>
var vm=new Vue({
        el:'#app',
        data:{
            price:10,
            num:0
        },
        computed:{
            totalPrice (){
                return this.price*this.num;
            }
        }
    });

六、watch状态监听

Vue中的事件处理方法时根据用户所需自行定义的,它可以通过单击事件、键盘事件等触发条件来触发,但不能自动监听当前Vue对象的状态变化。为了解决上述问题,Vue提供了watch状态监听功能。

<div id="app">
    <input type="text" v-model="cityName">
</div>
var vm=new Vue({
        el:'#app',
        data:{
            cityName:'shanghai'
        },
        watch:{
            cityName(newName,oldName){
                console.log(newName,oldName);
            }
        }
    });

七、filters过滤器

在前端页面开发中,通过数据绑定可以将data数据绑定到页面中,页面中的数据经过逻辑层处理后展示最终的结果。数据的变化除了在Vue逻辑层进行操作外,还可以通过过滤器来实现。

7.1 在插值表达式中使用过滤器

通过{{data}}语法,可以将data中的数据插入页面中,该语法就是插值表达式。在插值表达式中还可以使用过滤器来对数据进行处理,语法为{{data|filter}}

<div id="app">
    <div>{{message|toUpcase}}</div>
</div>
 var vm=new Vue({
        el:'#app',
        data:{
            message:'helloword'
        },
        filters:{
            toUpcase(value){
                return value?value.toUpperCase():'';
            }
        }
    });

7.2 在v-bind属性绑定中使用过滤器

v-bind用于属性绑定,如v-bind:id="data"(可省略写成:id="data")表示绑定id属性,值为data。在data后面可以加过滤器,语法为data|filter

<div id="app">
    <div v-bind:id="dataId|formatId">hellowworld</div>
</div>
 var vm=new Vue({
        el:'#app',
        data:{
            dataId:'dff1'
        },
        filters:{
            formatId(value){
                return value?value.charAt(1)+value.indexOf('d'):'';
            }
        }
    });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值