Vue中的内置指令

5.1 基本指令

5.1.1 v-­cloak(遮掩) 一般与display:none进行结合使用

作用:解决初始化慢导致页面闪动的最佳实践

//css中 设置 [v-cloak] display:none ------------------------------
  

 //html中  ------------------------------
  

{{msg}}

//vue中 ------------------------------

5.1.2 v-­once

定义它的元素和组件只渲染一次

 //html中  ------------------------------
  

{{msg}}

//vue中 ------------------------------

5.2 条件渲染指令

5.2.1 v-­if, v-­eles­-if ,v­-else

用法: 如果三个全用的话,就必须按照上面顺序

 

{{apple}}

{{orange}}

{{banana}}

-------------------------------- var app = new Vue({ el: '#app', data: { apple: '我是苹果', orange: '我是橘子', banana: '我是香蕉' } })

v-if的弊端 :
Vue 在渲染元素时 ,出于效率考虑,会尽可能地复用已有的元素而非重新渲染, 因此会出现乌龙只会渲染变化的元素。
如:

//这里的弊端,input元素被复用

用户名:
密码:
------------------------------------------------------- var app = new Vue({ el: '#app', data: { type: 'name' }, methods: { trg: function(){ this.type = (this.type==='name' ? 'password' : 'name') } } })

解决方法:加key,提供key唯一的值可以来决定是否复用该元素
如:

// 加入了key,key的值可以随便定义
// 如果两个不相等,那么就是唯一的,如果相等,那么代表可以复用

用户名:
密码:
------------------------------------------------------- var app = new Vue({ el: '#app', data: { type: 'name' }, methods: { trg: function(){ this.type = (this.type==='name' ? 'password' : 'name') } } })

5.2.2 v­-show

只改变了css属性display

v-­if 和 v­-show 的比较

  • v-­if:
    实时渲染:页面显示就渲染,不显示。我就给你移除
  • v-­show:
    v­-show的元素永远存在也页面中,只是改变了css的display的属性

代码举例:

// 在html中------------------------------------

{{msg}}

//相等于 下面代码

{{msg}}

//------------------------------------------------------------------------ var app = new Vue({ el: '#app', data: { msg: '我是组件数据' } })

5.3 列表渲染指令v-­for

用法: 当需要将一个数组遍历或枚举一个对象属性的时候循环显示时,就会用到列表渲染指令 v-­for。
一定是写在遍历的元素上,v-for后面接等号,内容为 '申明一变量' in 'data中要遍历的一个数组'

两种使用场景:

  1. 遍历多个对象,那么一定是数组
  • {{value.name}}
----------------------------------------------------------- var app = new Vue({ el: '#app', data: { arrData: [ {name: '我是1号'}, {name: '我是2号'}, {name: '我是3号'}, ] } }) --------------------------------------------------------------------------------- // 带索引的写法: 用括号,里面有两个变量,第一个为item,第二个为index
  • {{index}} ---- {{value.name}}
  1. 遍历一个对象的多个属性
  • {{value}}
----------------------------------------------------------- var app = new Vue({ el: '#app', data: { objData:{ apple: '我是苹果', orange: '我是橘子', banana: '我是香蕉' } } }) --------------------------------------------------------------------------------- // 带索引的写法: 用括号,里面有三个变量,第一个为item,第二个为key,第三个为index
  • {{index}} :{{key}}---{{value.name}}

5.4 数组更新,过滤与排序

改变数组的一系列方法:

  • push() 在末尾添加元素
  • pop() 将数组的最后一个元素移除
  • shift() 删除数组的第一个元素
  • unshift() 在数组的第一个元素位置添加一个元素
  • splice() 可以添加或者删除函数—返回删除的元素
    三个参数:
    第一个参数 表示开始操作的位置
    第二个参数表示:要操作的长度
    第三个为可选参数:
  • sort() 排序
  • reverse() 倒序
  • filter() 过滤


  
  JS Bin


  
{{value}}

排序用法: sort()
倒序的用法: reverse()
过滤的用法: filter() 需要用到计算属性 computed {{filData}}

两个数组变动vue检测不到:

  1. 改变数组的指定项
  2. 改变数组长度

解决方法:
1.set 改变指定项: Vue.set(app.arr,1,”car”);
2.splice 改变数组长度: app.arr.splice(1)

5.5 方法和事件

[object MouseEvent]

5.4.1 基本用法

v­-on绑定的事件类似于原生 的onclick等写法

点击基数:{{count}}
------------------------------------------------------------------------------ var app = new Vue({ el: '#app', data: { count: 100 }, methods: { oneNum: function(val){ val = val || 1 this.count = this.count + val } } })

如果方法中带有参数,但是没有加括号,默认传原生事件对象event

5.4.2 修饰符

在vue中传入event对象用 $event

向上冒泡

  • stop 阻止单击事件向上冒泡
  • prevent 提交事件并且不重载页面
  • self 只是作用在元素本身而非子元素的时候调用
  • once 只执行一次的方法

可以监听键盘事件:
——­指定的keyCode

stop: 阻止单击事件向上冒泡

prevent: 提交事件并且不重载

self: 只是作用在元素本身而非子元素的时候调用

once: 只执行一次

监听键盘事件:
---------------------------------------------------------------------- var app = new Vue({ el: '#app', methods: { divClick: function(){ alert('div被点击了') }, btnClick: function(){ alert('botton被点击了') }, hangle: function(){ alert('我不重载了') }, onceClick: function(){ alert('开始执行了') }, submitMe: function(){ alert('你按下了Enter') } } })

你可能感兴趣的:(Vue中的内置指令)