3.Vue常用特性


1.表单操作

  (1)基于Vue的表单操作

    input    单行文本

    textarea   多行文本

    select      下拉多选

    radio        单选框

    checkbox  多选框

  (2)表单域修饰符

    number   转化为数值

    trim      去掉开始和空格的结尾

    lazy       将input事件切换为change事件

1 <input type="text" v-model.number='age'>
2 <input type="text" v-model.trim='info'>
3 <input type="text" v-model.lazy='msg'>

2.自定义指令

  (1)为何需要自定义指令?

    内置指令不满足需求

  (2)定义的语法规则 

1 Vue.directive('focus',{
2             inserted:function(el){
3                 // el表示指令所绑定的元素
4                 el.focus();
5             }
6  });

  (3)自定义指令用法

1 <input type="text" v-focus>

  (4)带参数的自定义指令(改变元素背景色)

1 Vue.directive('color',{
2             bind:function(el,binding){
3                 // 根据指令的参数设置背景色
4                 // console.log(binding.value.color);
5                 el.style.backgroundColor = binding.value.color;
6             }
7         })

  (5)指令的用法

1 <input type="text" v-color='msg'>

  (6)局部指令

 1 directives:{
 2                 color:{
 3                     bind:function(el,binding){
 4                         // 根据指令的参数设置背景色
 5                         // console.log(binding.value.color);
 6                         el.style.backgroundColor = binding.value.color;
 7                     }
 8                 },
 9                 focus:{
10                     inserted:function(el){
11                         el.focus();
12                     }
13                 }
14             }

3.计算属性

  为何需要计算属性?

    表达式的计算逻辑可能会比较复杂,使用计算属性可以使模板内容更加简洁

  计算属性的用法

1 computed:{
2                 reverseString:function(){
3                     return this.msg.split('').reverse().join('');
4                 }
5             }

  计算属性与方法的区别

    计算属性是基于它们的依赖缓存的

    方法不需要缓存

4.侦听器

  (1)应用场景

    数据变化时执行异步或开销较大的操作

  (2)侦听器的用法

1 watch:{
2                 firstName:function(val){
3                     this.fullName = val + ' ' + this.lastName;
4                 },
5                 lastName:function(val){
6                     this.fullName = this.firstName + ' ' + val;
7                 }
8             }

5.过滤器

  作用

    格式化数据,比如将字符串格式化为首字母大写,将日期格式化为指定的格式等

  自定义过滤器

    Vue.filter('过滤器名称',function(value){

        // 过滤器业务逻辑

    })

  过滤器的使用 

1 <div>{{msg | upper}}div>
2 
3 <div>{{msg | upper | lower}}div>
4 
5 div :abc='msg | upper'>测试数据div>

  局部过滤器   

1 // 局部过滤器只能在本组件中使用
2             filters:{
3                 upper:function(val){
4                     return val.charAt(0).toUpperCase() + val.slice(1);
5                 }
6             }

  带参数的过滤器

    Vue.filter('format',function(value,arg1){

        // value就是过滤器传递的参数

  })

  过滤器的使用

1 <div>{{date | format('yyyy-MM-dd')}}div>

6.生命周期

  1.主要阶段

    挂载(初始化相关属性)

      beforeCreate

      created

      beforeMount

      mounted

    更新(元素或组件的变更操作)

      beforeUpdate

      updated

    销毁(销毁相关属性)

      beforeDestroy

      Destroyed

  2.Vue实例的生产过程

      ① beforeCreate 在实例初始化之后,数据观测和事件配置之前被调用。

      ② created 在实例创建完成后被立即调用。

        ③ beforeMount 在挂载开始之前被调用。

        ④ mounted el被新创建的vm.$el替换,并挂载到实例上去之后调用该钩子。

      ⑤ beforeUpdate 数据更新时调用,发生在虚拟DOM打补丁之前。

      ⑥ updated 由于数据更改导致的虚拟DOM重新渲染和打补丁,在这之后会调用该钩子。

      ⑦ beforeDestroy 实例销毁之前调用。

      ⑧ destroyed 实例销毁后调用。

vue