详解Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on


Posted in Javascript onOctober 12, 2018

Vue.js的指令是以v-开头的,它们作用于HTML元素,指令提供了一些特殊的特性,将指令绑定在元素上时,指令会为绑定的目标元素添加一些特殊的行为,我们可以将指令看作特殊的HTML特性(attribute)。

Vue.js提供了一些常用的内置指令,如下:

v-if指令

v-for指令

v-show指令

v-else指令

v-bind指令

v-on指令

1:v-if指令

v-if指令是条件渲染指令,它根据表达式的真假来删除和插入元素,它的基本语法如下:

v-if="expression"

expression是一个返回布尔值的表达式,表达式可以是一个布尔值属性,也可以是一个返回布尔值的运算式。

Eg:

<div id="app">
  <h1>Hello, Vue.js!</h1>
  <h1 v-if="yes">Yes!</h1>
  <h1 v-if="no">No!</h1>
  <h1 v-if="age >= 18">Age: {{ age }}</h1>
  <h1 v-if="name.indexOf('li') >= 0">Name: {{ name }}</h1>
 </div>
 var app= new Vue({
  el: '#app',
  data: {
  yes: true,
  no: false,
  age: 20,
  name: 'lililili'
  }
 })

        //数据的yes属性为true,所以"Yes!"会被输出;

//数据的no属性为false,所以"No!"不会被输出;

//运算式age >= 18返回true,所以"Age: 28"会被输出;

//运算式name.indexOf('li') >= 0返回false,所以"Name: lililili"会被输出。

V-if只能控制一个元素上的是否显隐,对于多个元素控制我们可以使用一个template元素实现

在vue中我们想使用条件模板直接在dom元素上使用v-if指令,v-if指令的值表示vue实例对象上的数据值

Tempalte是vue提供的一个自定义元素,写在这个里面的 元素会根据template v-if属性来控制显隐,在渲染以后这个元素会被vue删除掉,(v-if指令元素保留)

<div id="app">
<template v-if="type">
<span>{{type}}</span> <span> | </span>
</template>
<strong>{{title}}</strong>
</div>
<script type="text/javascript" src="vue.js"></script>
<script type="text/javascript">
// 数据
var data = {
title: '哈哈哈',
type: '科技'
}
var app = new Vue({
el: '#app',
data: data
})

2:v-for指令

v-for指令基于一个数组渲染一个列表,它和JavaScript的遍历语法相似:

v-for="item in items"

items是一个数组,item是当前被遍历的数组元素。

Eg:

<ul id="app">
<li v-for="item in list">{{item}}</li>
</ul>
/var data = [
'快乐大本营',
'奔跑吧兄弟',
'极限挑战'
]
var app = new Vue({
el: '#app',
data: {
list: data
}
})

与v-if一样v-for也可以应用在template元素上,此时可以实现对多组元素的for循环

Eg:

<ul id="app">
<template v-for="item in list">
<li>
<span v-if="item.type">{{item.type}} | </span>
<strong>{{item.title}}</strong>
</li>
<br>
</template>
</ul>
var data = [
{
type: '湖南',
title: '快乐大本营'
},
{
type: '浙江',
title: '奔跑吧兄弟'
},
{
type: '东方',
title: '极限挑战'
}
]
var app = new Vue({
el: '#app',
data: {
list: data
}
})

3:v-show指令

v-show也是条件渲染指令,控制元素显隐,和v-if指令不同的是,使用v-show指令的元素始终会被渲染到HTML,它只是简单地为元素设置CSS的style属性。

V-if是false会将元素在dom文档中删除

V-show是false是将元素的display设置none

V-if会删除元素,v-show只是做样式显隐,会保留页面中

4:v-else指令

可以用v-else指令为v-if或v-show添加一个“else块”。v-else元素必须立即跟在v-if或v-show元素的后面——否则它不能被识别。

v-else元素是否渲染在HTML中,取决于前面使用的是v-if还是v-show指令。

v-if为true,后面的v-else不会渲染到HTML;v-show为tue,但是后面的v-else渲染到HTML。

5:v-bind指令

v-bind指令可以在其名称后面带一个参数,中间放一个冒号隔开,这个参数通常是HTML元素的特性(attribute),例如:v-bind:class=”''

v-bind:argument="expression"

6:v-on指令

v-on指令用于给监听DOM事件,它的用语法和v-bind是类似的,例如监听<a>元素的点击事件:

<a v-on:click="doSomething">

语法:V-on:click=“事件回调函数的名称”

定义事件的回调函数,在vue的实例化对象的methods属性中定义

Methods他的值是一个对象

对象是属性名称表示事件的回调函数名称

对象的属性值是一个函数,就是事件的回调函数

他的this指向的是vue实例化对象,因此通过它我们可以获取或者设置vue实例化对象上属性

它默认有个参数是事件对象,这个事件对象可以访问该事件的相关信息$event传递参数可以访问到事件对象

当我们在使用事件时候,可以传递一些参数,此时在vue的事件回调函数中它的参数与事件使用时候传入的参数是一致的

<input type="text" v-model="msg">
<button v-on:click="showTitle(msg, $event, 'hello')">btn</button>
<button v-on:click="showTitle">btn2</button>
<h1>{{title}}</h1>
var app = new Vue({
el: '#app',
data: {
title: '',
msg: ''
},
methods: {
// 属性名称表示回调函数的名称
showTitle: function () {
// console.log(this)
// console.log(arguments) 传的参数都能访问到 msg, $event, 'hello'
// 通过this访问vue实例化对象上的其他属性和方法。Data.title data.aa
this.title = '快乐大本营';
},
aa: function () {
}
}
})

总结

以上所述是小编给大家介绍的Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jQuery 学习6 操纵元素显示效果的函数
Feb 07 Javascript
ExtJS PropertyGrid中使用Combobox选择值问题
Jun 13 Javascript
谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法
Dec 03 Javascript
jQuery Validate插件实现表单强大的验证功能
Dec 18 Javascript
JS实现弹出居中的模式窗口示例
Jun 20 Javascript
jQuery如何跳转到另一个网页 就这么简单
Dec 28 Javascript
Node.js调试技术总结分享
Mar 12 Javascript
HTML5实现微信拍摄上传照片功能
Apr 21 Javascript
IntelliJ IDEA 安装vue开发插件的方法
Nov 21 Javascript
Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not permitted)
Dec 27 Javascript
浅谈在react中如何实现扫码枪输入
Jul 04 Javascript
详解jQuery中的getAll()和cleanData()
Apr 15 jQuery
Vue插值、表达式、分隔符、指令知识小结
Oct 12 #Javascript
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
Oct 12 #Javascript
vue使用v-if v-show页面闪烁,div闪现的解决方法
Oct 12 #Javascript
开发用到的js封装方法(20种)
Oct 12 #Javascript
Vue中 v-if/v-show/插值表达式导致闪现的原因及解决办法
Oct 12 #Javascript
微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}
Oct 12 #Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
Oct 12 #Javascript
You might like
PHP的curl实现get,post和cookie(实例介绍)
2013/06/17 PHP
使用淘宝IP库获取用户ip地理位置
2013/10/27 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
jQuery Ajax提交表单查询获得数据实例代码
2012/09/19 Javascript
让页面上两个div中的滚动条(滑块)同步运动示例
2013/08/07 Javascript
extjs每个组件要设置唯一的ID否则会出错
2014/06/15 Javascript
js控制页面的全屏展示和退出全屏显示的方法
2015/03/10 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
2015/04/06 Javascript
javascript生成不重复的随机数
2015/07/17 Javascript
jquery实现美观的导航菜单鼠标提示特效代码
2015/09/06 Javascript
基于BootStrap的Metronic框架实现页面链接收藏夹功能按钮移动收藏记录(使用Sortable进行拖动排序)
2016/08/29 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
详解Nodejs 通过 fs.createWriteStream 保存文件
2017/10/10 NodeJs
使用watch监听路由变化和watch监听对象的实例
2018/02/24 Javascript
基于layui框架响应式布局的一些使用详解
2019/09/16 Javascript
Element实现表格嵌套、多个表格共用一个表头的方法
2020/05/09 Javascript
Vue 401配合Vuex防止多次弹框的案例
2020/11/11 Javascript
[49:15]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第二场 1月19日
2021/03/11 DOTA
python调用机器喇叭发出蜂鸣声(Beep)的方法
2015/03/23 Python
使用Python构建Hopfield网络的教程
2015/04/14 Python
django admin添加数据自动记录user到表中的实现方法
2018/01/05 Python
用Django实现一个可运行的区块链应用
2018/03/08 Python
python数字图像处理实现直方图与均衡化
2018/05/04 Python
Python如何发布程序的详细教程
2018/10/09 Python
python+opencv实现阈值分割
2018/12/26 Python
PyTorch笔记之scatter()函数的使用
2020/02/12 Python
python中sympy库求常微分方程的用法
2020/04/28 Python
python函数map()和partial()的知识点总结
2020/05/26 Python
Viking Direct荷兰:购买办公用品
2019/06/20 全球购物
亚洲最大的运动鞋寄售店:KicksCrew
2020/11/26 全球购物
如何在Shell脚本中使用函数
2015/09/06 面试题
三个儿子教学反思
2014/02/03 职场文书
初中作文评语大全
2014/04/23 职场文书
党的群众路线教育实践活动心得体会(乡镇)
2014/11/03 职场文书
使用canvas实现雪花飘动效果的示例代码
2021/03/30 HTML / CSS
关于React Native 无法链接模拟器的问题
2021/06/21 Javascript