首页 > 技术分享 > Vue
收藏

Vue常用指令及用法说明

07/11 10:13
大潇博客 原创文章,转载请标明出处

以outerHTML模板用法做为背景,结合代码,讲解一些指令的用法

注意:

指令会影响元素的渲染行为

指令始终以“v-”开头


v-for:循环元素,比如要循环<li>

<ul>

      <!-- v-for参数:item是数组循环的每一项,i是下标 -->

      <li v-for="(item, i) in data" :id="item.id">{{data.param}}</li>

      <!-- 下标可以省略,简写为 -->

      <li v-for="item in data">{{item.param}}</li>

</ul>


v-if、v-else-if、v-else:控制元素生成

<div v-if="item.show==1">价格情况:</div>

<div v-if="item.price>10000">贵</div>

<div v-else-if="item.price>5000">中等</div>

<div v-else>便宜</div>

<div v-if="item.number<1">,没有库存</div>


v-show:控制元素可见度

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

<div v-show="false">隐藏</div>

//通过变量

data: {

      show_status: true

}

<div v-show="show_status">变量控制</div>


v-html:设置元素的innerHTML

带html标签的内容,如:<h1>标题</h1>,在Vue中使用mustache模板引擎的{{变量名}}进行渲染,html标签会被编码并直接输出到页面,使用v-html指令就可以将标签作为html的一部分显示出来

注意:该指令会导致元素的模板内容失效

//定义变量content的值

data: {

      content: '<p style="color:red">我是P标签</p>';

}

若通过两个大括号渲染:{{content}},p标签也会被当做字符串输入到页面

正确渲染方法

<div v-html="content"></div>


//若元素中有内容,使用v-html后将失效

<div v-html="content">div中原有的内容,使用v-html后将被替换成新内容</div>


v-bind:绑定属性

HTML标签自带的属性或Vue一些特殊属性,如a标签的href属性、img的src属性、input的value、Vue的id等,无法通过{{变量名}}进行渲染赋值,Vue提供了v-bind用于属性绑定,如 v-bind:href="变量名"、v-bind:src="变量名"、v-bind:value="变量名"

v-bind可以简称成冒号,如 :href="变量名"、:src="变量名"、:value="变量名"

//定义变量

data: {

      Url: 'https://www.baidu.com/',

      imgUrl: 'https://www.daxiao.show/uploadfile/2022/1122/20221122020048279.png'

}

//使用v-bind绑定属性,变量直接写,不需要{{}}

<a v-bind:href="Url">点击跳转</a>

//使用v-bind渲染图片

<img v-bind:src="imgUrl" width="500">


//以上可简写为

<a :href="Url">点击跳转</a>

<img :src="imgUrl" width="500">


v-on:注册事件

该指令由于十分常用,因此提供了简写@

常用的如:点击事件v-on:click、键盘松开事件v-on:input

事件参数会自动传递,调用函数时可不带参数,比如:@click="func_name" 和 @click="func_name($event)" 是一样的

事件支持一些指令修饰符,如:prevent、stop

prevent 阻止元素的默认行为,比如a标签的跳转行为,使用方法如:@click.prevent="fun_name"

stop 阻止冒泡

<button v-on:click="func($event)">点击事件</button>

<!-- 使用@简写,并省略参数 -->

<button @click="func">点击事件</button>


<!-- 阻止默认行为,此时点击span并不会触发外层的跳转 -->

<a href="https://www.baidu.com/">

      <span @click.prevent="func()"></span>

</a>


<!-- 阻止冒泡,此时点击func2并不会触发父级的func1 -->

<div @click="func1">

      <div @click.stop="func2">点击</div>

</div>


v-model:双向数据绑定,常用于表单元素

通过v-bind和v-on结合,也能实现相同的效果,所以v-model等于是v-bind和v-on的复合版

<!-- 设置变量 -->

data: {

      content: "测试内容"

}


<!-- 使用v-bind设定input值, 使用v-on监听键盘松开事件并改变content的值($event可以获取到事件对象)-->

<input type="text" :value="content" v-on:input="content=$event.target.value">

<!-- 通过v-model实现双向绑定,即可设定值,也可改变值 -->

<input type="text" v-model="content">


打赏

阅读排行

大家都在搜

博客维护不易,感谢你的肯定
扫码打赏,建议金额1-10元
  • 15601023311