Vue--常用指令

92 阅读3分钟
    new Vue({
        el: '#app',
        // 用于定义数据
        data:{
            msg: 'Hello Vue',
            htmlStr: '<h1>一级标题</h1>'
            url: 'https://www.baidu.com',
            username: '张三',
            age: '',
            score: 99
            
        },
        // 用于定义方法
        methods:{
            addNum:function(){
                // 需使用 this 关键字才能访问到 data 中的数据
                this.num = this.num + 1
            },	
            /* 事件处理函数的简写形式---推荐 */
            addNumN(2){
        	this.num = this.num + n
            }
            
        }
    })

Mustache语法

在vue项目中最简单且使用最多的渲染语法就是“Mustache”语法 (双大括号),也叫插值表达式

<div id='#app'>
    {{ msg }}
</div>

v-text

类似双大括号语法渲染数据的另一种方式是使用v-text

<div id='#app'>
    <p v-text='msg'></p>
</div>

v-html

由于双大括号语法无法渲染HTML标签,当需要渲染html格式的字符串时需使用 v-html 指令

<div id='#app'>
    <div v-html='htmlStr'></div>
</div>

v-bind属性绑定

用于给属性动态绑定属性值。同时属性绑定还有简写形式,v-bind:属性=属性值 简写为 :属性=属性值

<div id='#app'>
    <a v-bind:href='url'>百度首页</a>
    <!-- 上面代码可以简写为如下,功能不变 -->
    <a :href='url'>百度</a>
</div>

v-model双向数据绑定

表单元素设置了之后会忽略掉元素本身的 value,checked,selected 属性

双向数据绑定:

  • 修改数据,页面内容会更随发生变化
  • 修改页面内容,数据也会同时发生改变
<div id='#app'>
    <input type='text' v-model='username' />
</div>

v-model修饰符

修饰符描述
.number自动将用户输入的值转换为数值类型
.trim去除用户输入值开头和结尾的空白字符
.lazy将input事件切换为change事件
<div id='#app'>
    <input type='text' v-model.number="age">
    <input type='text' v-model.trim="username">
    <!-- 用于只要在失去焦点后才触发事件 -->
    <input type='text' v-model.lazy="username">
</div>

v-on事件绑定

用于给监听DOM事件,绑定事件触发事件处理函数

/*
语法:
v-on:事件类型=事件处理函数名称()
简写语法:
@事件类型=事件处理函数名称()
*/

<p>num的值是:{{num}}</p>
<button v-on:click="addNum1">num + 1</button>
<button @click="addNumN(2)">num + n</button>

事件修饰符

注意:多个修饰符之间可以连写,但注意书写的顺序,顺序不同会导致不同的结果

修饰符描述
.stop阻止事件冒泡。相当于原生JS中的stopPropagation()方法
.trim阻止默认行为。相当于原生JS中的preventDefault()方法

按键修饰符

修饰符描述
.enter按下Enter(回车)键触发
.delete按下Delete(删除)键触发
.esc按下Esc(退出)键触发

v-for列表渲染

v-for指令基于一个数组渲染一个列表,与JS的遍历语法相似

<li v-for="(item,index) in list" :key='item.id'>{{item}}</li>
/*	
	item  数组的每一个元素
	index 当前元素所处索引
	list 要遍历的数组
*/

key的作用:帮助Vue区分不同的元素,从而提高性能,防止列表状态混乱

key的注意点:

  • 使用v-for时都建议指定key的值(提高性能、防止列表状态混乱)
  • key的值只能是字符串或数字类型
  • key的值必须具有唯一性,否则终端会报错
  • 建议把数据项id属性的值作为key的值
  • 使用index的值作为key的值没有任何意义(index的值不具有唯一性)

条件渲染

v-if

v-if是条件渲染指令,它根据表达式的真假来删除和插入元素。同时还可以配合 v-else-if v-else 指令使用

<div id="app">
    <!-- 当前因为data中的数据score为99,当前只会渲染 优秀这个div -->
    <div v-if="score>=90">优秀</div>
    <div v-else-if="score<90&&score>=60">良好</div>
    <div v-else>不及格</div>
</div>

v-show

v-show也是条件渲染指令,它根据表达式的真假来显示或隐藏元素

<div id="app">
    <div v-show="true">测试内容</div>
</div>

v-if和v-show的区别

  • v-if指令 每次动态创建或移除元素,实现元素的显示和隐藏,所以如果刚进入页面是,某个元素默认不需要显示出来,而后期这个元素很有可能也不需要被展示出来,用v-if性能更好
  • v-show指令 动态为元素添加或移除 display:none 样式来实现元素的显示或隐藏。所以如果需要频繁的切换元素的显示状态,用v-show性能更好