小言_互联网的博客

Vue学习日志 day05

348人阅读  评论(0)

Vue学习日志 day05

一:v-on事件监听

1.基本使用

v-on

语法糖:@

2.参数传递

参数问题:

1.该方法不需要额外参数,那么方法后的()可以不添加

如果需要同时传入某个参数还需要event 那么可以通过$event传入事件

若v-on里面不传参数(加小括号),在定义时传了一个参数:那么形参为undefined

v-on里没有小括号,定义时传入一个参数,那么形参为event对象

若又要传event对象,又要传参数:

将传入event的参数改成$event

v-for:click="btnclick(abc,$event)"

3.修饰符

.stop

与冒泡相关

阻止冒泡:@click.stop=“btnclick”

.prevent

阻止默认事件

.{keyCode|keyAlias}

只当事件是从特定键触发时才触发回调

@keyup.13 = “whenkeyup”

.enter 监听回车

.native

监听组件根元素的原生事件

.once

只触发一次回调

二:v-if/v-else-if/v-else

<div v-if="false">
    
</div>

<div v-if="show">
    {{message}}
</div>
data:{
	message:"xxx",
	show:true
}
<!--分数-->
<div v-if="score>=90">
    
</div>
<div v-else-if="score>=80">
    
</div>
<div v-else-if="score>=70">
    
</div>
<div v-else-if="score>=60">
    
</div>
<div v-else-if="score>=60">
    
</div>
<div v-else>
    
    
</div>

双选型:

<div v-if="isuser">
    xxx
</div>
<div v-else>
    xxx
</div>
<button @click="isuser = !isuser">
    点击切换
</button>

注:vue为了性能考虑,在渲染之前会抽取成虚拟dom,并尽可能复用已有的元素,而不是创建新元素 若不复用, 则改变key值 若key值相同则复用

<input name="user" key="username">
<input name="psw" key="email">

若不加key,则会复用

三:v-show

决定元素是否在页面中显示出来

<div v-show="true">
    
</div>

与v-if消失方式不同

v-show只是改变display为none(false时)

当显示和隐藏的切片很频繁时 用v-show

只有一次切换的时候使用v-if

四:v-for遍历数组和对象

遍历数组

<div v-for="(item,index) in movies">
    {{item}} {{index+1}}
</div>

遍历对象

<div v-for="(value,key,index) in info">
    {{value}}
    {{key}}
</div>

key属性

官方建议我们在用v-for时加上key属性

加key的原因:和虚拟DOM的Diff算法有关 会增强性能(高效的更新虚拟dom)

数组往任意位置插入元素的方式:

app.letters.splice(2,0,‘F’)

splice方法 第二个参数为0 则是插入元素

会在第二个元素的位置插入元素

内部实际上是数组插入的方式(元素依次往后移) 性能较低

:key=“item” 保证绑定的key和渲染的元素一一对应

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2t2ah7Dl-1570026515591)(C:\Users\z\AppData\Roaming\Typora\typora-user-images\1570013590273.png)]

图二为绑定key的形式

数组中的响应式方法

//可以响应式
push() //push('aaa','bbb','ccc')
pop()
shift()
unshift()
//splice 关键在于第二个参数
splice()
//传入1个参数
//从第一个参数到最后所有全删掉
//传入2个参数
//第一个参数是从第几个开始,第二个参数是删除几个参数
//传入3个参数
//替换操作,splice(1,3,'m','n','l')
//用mnl代替1位置后面的三个元素
sort()
reverse()

//不能响应式
this.letters[0] = 'aaaaa'
//这种方式可以改为
this.letters.splice(0,1,'aaaaa')
//或用Vue的方式
Vue.set(this.letters,0,'aaaaa')
//可变参数
function sum(...num){
    console.log(num) //存放所有参数
}

响应式
this.letters[0] = ‘aaaaa’
//这种方式可以改为
this.letters.splice(0,1,‘aaaaa’)
//或用Vue的方式
Vue.set(this.letters,0,‘aaaaa’)




```javascript
//可变参数
function sum(...num){
    console.log(num) //存放所有参数
}

转载:https://blog.csdn.net/qq_44686225/article/details/101978510
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场