02vue2.0-Vue常用特性

表单基本操作

  • 获取单选框中的值
  • 通过v-model
    1、 两个单选框需要同时通过v-model 双向绑定 一个值
    2、 每一个单选框必须要有value属性 且value 值不能一样
    3、 当某一个单选框选中的时候 v-model 会将当前的 value值 改变 data 中的 数据

   

   
   


获取复选框中的值

  • 通过v-model
  • 和获取单选框中的值一样
  • 复选框 checkbox 这种的组合时 data 中的 hobby 我们要定义成数组 否则无法实现多选
    1、 复选框需要同时通过v-model 双向绑定 一个值
    2、 每一个复选框必须要有value属性 且value 值不能一样
    3、 当某一个单选框选中的时候 v-model 会将当前的 value值 改变 data 中的 数据
爱好:

获取下拉框和文本框中的值

  • 通过v-model
    1、 需要给select 通过v-model 双向绑定 一个值
    2、 每一个option 必须要有value属性 且value 值不能一样
    3、 当某一个option选中的时候 v-model 会将当前的 value值 改变 data 中的 数据 occupation 的值就是选中的值,我们只需要实时监控他的值就可以了

      
         
        
  

表单修饰符

  • .number 转换为数值
    • 注意点:
    • 当开始输入非数字的字符串时,因为Vue无法将字符串转换成数值
    • 所以属性值将实时更新成相同的字符串。即使后面输入数字,也将被视作字符串。
  • .trim 自动过滤用户输入的首尾空白字符
    • 只能去掉首尾的 不能去除中间的空格
  • .lazy 将input事件切换成change事件
    • .lazy 修饰符延迟了同步更新属性值的时机。即将原本绑定在 input 事件的同步逻辑转变为绑定在 change 事件上
  • 在失去焦点 或者 按下回车键时才更新






自定义指令

  • 内置指令不能满足我们特殊的需求
  • Vue允许我们自定义指令

https://cn.vuejs.org/v2/guide/custom-directive.html```

  • Vue.directive 注册全局指令
  • 使用自定义的指令,只需在对用的元素中,加上'v-'的前缀形成类似于内部指令'v-if','v-text'的形式。

注意点:
1、 在自定义指令中 如果以驼峰命名的方式定义 如 Vue.directive('focusA',function(){})
2、 在HTML中使用的时候 只能通过 v-focus-a 来使用

// 注册一个全局自定义指令 v-focus
Vue.directive('focus', {
    // 当绑定元素插入到 DOM 中。 其中 el为dom元素
    inserted: function (el) {
            // 聚焦元素
            el.focus();
    }
});
new Vue({
  el:'#app'
});

Vue.directive 注册全局指令 带参数

 
 

自定义指令局部指令

  • 局部指令,需要定义在 directives 的选项 用法和全局用法一样
  • 局部指令只能在当前组件里面使用
  • 当全局指令和局部指令同名时以局部指令为准

 
 

计算属性(computed)

  • 模板中放入太多的逻辑会让模板过重且难以维护 使用计算属性可以让模板更加的简洁
    **计算属性是基于它们的响应式依赖进行缓存的**
  • computed比较适合对多个变量或者对象进行处理后返回一个结果值,也就是数多个变量中的某一个值发生了变化则我们监控的这个值也就会发生变化
var vm = new Vue({
      el: '#app',
      data: {
        msg: 'Nihao'
      },
      computed: {
        reverseString: function(){
          return this.msg.split('').reverse().join('');
        }
      }
    });
  • 计算属性与方法的区别
    - 计算属性是基于它们的响应式依赖进行缓存的

  
{{reverseMessage()}}
{{reverseMessage()}}
{{reverseString}}
{{reverseString}}
image.png

侦听器(watch)

  • 使用watch来响应数据的变化
  • 一般用于异步或者开销较大的操作
  • watch 中的属性 一定是data 中 已经存在的数据
  • 当需要监听一个对象的改变时,普通的watch方法无法监听到对象内部属性的改变,只有data中的数据才能够监听到变化,此时就需要deep属性对对象进行深度监听
    image.png

  
名:
姓:
{{fullName}}

09-侦听器案例

  • 验证用户名是否可用

  
用户名: {{tip}}

watch、computed和methods`之间的对比:

methods方法表示一个具体的操作,主要书写业务逻辑;
watch一个对象,键是需要观察的表达式,值是对应回调函数。主要用来监听某些特定数据的变化,从而进行某些具体的业务逻辑操作;可以看作是computed和methods的结合体;
computed属性的结果会被缓存,除非依赖的响应式属性变化才会重新计算。主要当作属性来使用;

过滤器(filter)

  • Vue.js允许自定义过滤器,可被用于一些常见的文本格式化。
  • 过滤器可以用在两个地方:双花括号插值和v-bind表达式。
  • 过滤器应该被添加在JavaScript表达式的尾部,由“管道”符号指示
  • 支持级联操作
  • 过滤器不改变真正的data,而只是改变渲染的结果,并返回过滤后的版本
  • 全局注册时是filter,没有s的。而局部过滤器是filters,是有s的

  • 1自定义过滤器
Vue.filter(‘过滤器名称’, function(value){
// 过滤器业务逻辑
})
  • 2过滤器的使用
{{msg | upper}}
{{msg | upper | lower}}
  • 3局部过滤器
filters:{
capitalize: function(){}
}
  • 4带参数的过滤器
Vue.filter(‘format’, function(value, arg1){
// value就是过滤器传递过来的参数
})
  • 5过滤器的使用
{{date | format(‘yyyy-MM-dd')}}

 
{{msg | upper}}
{{msg | upper | lower}}
测试数据
  • 过滤时间的案例
    http://zhangzanzz007.gitee.io/vue-filter/

生命周期

  • 事物从出生到死亡的过程
  • Vue实例从创建 到销毁的过程 ,这些过程中会伴随着一些函数的自调用。我们称这些函数为钩子函数

常用的 钩子函数

beforeCreate 在实例初始化之后,数据观测和事件配置之前被调用 此时data 和 methods 以及页面的DOM结构都没有初始化 什么都做不了
created 在实例创建完成后被立即调用此时data 和 methods已经可以使用 但是页面还没有渲染出来
beforeMount 在挂载开始之前被调用 此时页面上还看不到真实数据 只是一个模板页面而已
mounted el被新创建的vm.$el替换,并挂载到实例上去之后调用该钩子。 数据已经真实渲染到页面上 在这个钩子函数里面我们可以使用一些第三方的插件
beforeUpdate 数据更新时调用,发生在虚拟DOM打补丁之前。 页面上数据还是旧的
updated 由于数据更改导致的虚拟DOM重新渲染和打补丁,在这之后会调用该钩子。 页面上数据已经替换成最新的
beforeDestroy 实例销毁之前调用
destroyed 实例销毁后调用
image.png

数组变异方法

  • 在 Vue 中,直接修改对象属性的值无法触发响应式。当你直接修改了对象属性的值,你会发现,只有数据改了,但是页面内容并没有改变
  • 变异数组方法即保持数组方法原有功能不变的前提下对其进行功能拓展
push() 往数组最后面添加一个元素,成功返回当前数组的长度
pop() 删除数组的最后一个元素,成功返回删除元素的值
shift() 删除数组的第一个元素,成功返回删除元素的值
unshift() 往数组最前面添加一个元素,成功返回当前数组的长度
splice() 有三个参数,第一个是想要删除的元素的下标(必选),第二个是想要删除的个数(必选),第三个是删除 后想要在原位置替换的值
sort() sort() 使数组按照字符编码默认从小到大排序,成功返回排序后的数组
reverse() reverse() 将数组倒序,成功返回倒序后的数组

替换数组

  • 不会改变原始数组,但总是返回一个新数组
filter filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
concat concat() 方法用于连接两个或多个数组。该方法不会改变现有的数组
slice slice() 方法可从已有的数组中返回选定的元素。该方法并不会修改数组,而是返回一个子数组
var vm = new Vue({
      el: '#app',
      data: {
        fname: '',
        list: ['apple','orange','banana']
      },
      methods: {
        add: function(){
          this.list.push(this.fname);
        },
        del: function(){
          this.list.pop();
        },
        change: function(){
          this.list = this.list.slice(0,2);
        }
      }
    });

动态数组响应式数据

  • Vue.set(a,b,c) 让 触发视图重新更新一遍,数据动态起来
  • a是要更改的数据 、 b是数据的第几项、 c是更改后的数据

  
  • {{item}}
{{info.name}}
{{info.age}}
{{info.gender}}

image.png

综合案例

http://zhangzanzz007.gitee.io/library-admin/

你可能感兴趣的:(02vue2.0-Vue常用特性)