首页 > 其他分享 >VUE——指令

VUE——指令

时间:2024-06-22 16:32:00浏览次数:12  
标签:VUE dom else item 指令 事件 属性

前言

提示:以下是本篇文章正文内容,下面案例可供参考

一、v-bind 指令

v-bind 指令是 标签上的所有属性都可以通过v-bind进行绑定,绑定的属性与data属性进行关联,以实现动态控制属性值的目的

<p v-bind:title="title">hello world</p>

let app = Vue.createApp({
        data(){
            return{
                title:'你好 世界'
            }
        }
    }).mount('#app')

:title ='title’第二个title为data中的属性,可以是动态的发生改变
v-bind有简写模式:

<p :title="title">hello world</p>

v-bind指令 可以直接绑定一个对象,这个对象的属性就会成为标签的属性,值就是属性值

二、v-on 指令

1、绑定事件

语法:v-on:事件 = ‘函数’

  • 事件,不要带on 例:onclick >click
  • 简写:@事件 = ‘函数’
2、定义事件

在vue的对象参数中,使用 methods 属性完成
例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box{
            width: 100px;
            height: 100px;
            background-color: purple;
        }
    </style>
</head>
<body>
    <div id="app">
        <div class="box" @click="move"></div>  
    </div>
</body>
<script src="../vue/vue.js/vue.global.js"></script>
<script >
    let app = Vue.createApp({
        data(){
            return{
                
            }
        },
        methods:{
            move(){
                console.log('hello');
            }
        }
    }).mount('#app')
</script>
</html>

在函数中,可以使用this代表当前的vue实例

3、传参

> <button @click="change('hahaha')">按钮</button>
>  let app = Vue.createApp({
        data(){
            return{
            }
        },
        methods:{
            change(e){
                console.log(e);
            }
        }
    }).mount('#app')

dataset(是标签对象的属性)
可以通过事件对象获取标签对象,然后获取dataset

4、事件对象

第一种获取方式

<button @click="change1">按钮1</button>

接受:

change1(e){
			// e就是事件对象
		}

第二种形式:

<button @click="change1('a',$event)">按钮1</button>

接受:

change1(e){
			// e就是事件对象
		}
5、多事件处理程序

可以同时给某个标签的某个事件绑定多个函数

<button @click="change(),change1()">按钮2</button>

注意:多事件处理程序的函数小括号不能丢

6、事件修饰符

在事件相关逻辑时,有些情况可能经常会发生,比如冒泡、默认行为等等,vue团队考虑到这些情况,直接将一些情况做了封装,可以非常方便的解决这些问题。

  • 系统行为事件修饰符
    .stop 阻止冒泡
    .prevent 阻止默认行为
    .capture 添加事件监听器时使用事件捕获模式
    .self 规定只有事件发生在自身时触发函数
    .once 一次性事件
  • 按键修饰符(专门针对键盘事件)
    .enter
    .tab
    .delete(捕获“删除”和“退格”键)
    .esc
    .space
    .up
    .down
    .left
    .right
  • 系统按钮,只有按下相应按键时,才能触发对应的时间事件
    .ctrl
    .alt
    .shift
    .meta
  • 鼠标事件修饰符
    .left
    .right
    .middle

三、v-if 指令

v-if根据条件决定是否显示dom结构

  • 对于复杂结构,可以通过一个不可见元素<temolate>进行包裹,并且不会被渲染到页面,然后控制其显示与否
  • v-if 的值如果是true,则显示dom结构,如果是false,则不显示dom结构
  • v-if 可以跟表达式:
<div class="box" v-if="show > 10"></div>
  • v-else v-else-if 都是配合v-if指令使用
    v-else 就是v-if的else条件,并且v-if和v-else两个修饰的dom结构,必须紧紧挨在一起
    v-else-if 充当v-if的“else-if”,可以连续使用

四、v-show 指令

v-show与v-if的区别:

  • v-show是通过display属性控制元素是否可视;而v-if是此dom结构是否存在来控制是否显示
  • v-if有更高的切换开销,而v-show有更高的初始渲染开销,所以,对于频繁切换的效果,推荐使用v-show;而很少切换的效果,推荐使用v-if

五、v-for 指令

v-for 循环
遍历一个数组,v-for所在的dom结构会被循环指定的次数

 <li v-for="item in newsList" :key="item">
		{{item}}
</li>
  • 一定要给v-for所在标签绑定一个唯一的 key属性
  • v-for接受第二个参数,表示索引位置
<li v-for="(item,index) in newsList" :key="item.id">
	{{index}}--{{item.news_title}}
</li>
  • v-for还支持遍历对象
<ul class="list">
	<li v-for="(item,key) in info" :key="item">{{key}} -- {{item}}</li>
</ul>
  • v-for还支持遍历数字
<ul class="list">
	<li v-for="item in 10" :key="item">{{item}}</li>
</ul>
  • v-for 的更新检测
    当通过一些方法操作数组时,应该记得,操作的其实就是原数组,这些方法对于数组的操作,可以直接反馈到dom中
    push()、pop()、shift()、unshift()、splice()、sort()、reverse()
    这几个方法操作数组的时候,操作结果会直接反馈到dom中。而使用其他数组方法操作数组时,要做一个重新赋值
  • v-for和v-if不要在一个标签上同时使用
    同时使用v-for和v-if是不推荐的,因为这样二者的优先级不明显。当它们同时存在于一个节点上时,v-if比v-for的优先级更高。这意味着 v-if 的条件将无法访问到 v-for 作用域内定义的变量别名
template v-for="(item,index) in tabs" :key="item.title">
	<li v-if="index === currentIndex">{{item.content}}</li>
</template>

标签:VUE,dom,else,item,指令,事件,属性
From: https://blog.csdn.net/2401_84341405/article/details/139882540

相关文章