Vue基础第四章 - v-bind指令
1、v-bind指令介绍
在前端开发过程中最常做的事莫过于class类名的绑定与style内联样式的修改,Vue中使用v-bind指令来实现这两个需求,在第二章中给出过简单的示例,下面我们来看一下v-bind指令的具体用法。
2、绑定class类名的三种方法
2.1、对象绑定法
所谓对象就是类似Python中的字典,以键值对的形式来动态控制一个class是否加载,如下示例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://unpkg.com/vue/dist/vue.min.js"></script>
<title>Vue 示例</title>
</head>
<body>
<div id="app1">
<!--:class等价于v-bind:class,:class可以与普通class同时存在,此处通过:class的对象中的isActive和isError的值来控制active和error类是否加载,最后的渲染结果为<div class="static active"></div>-->
<div class="static" :class="{'active':isActive,'error':isError}"></div>
</div>
<script>
var app1=new Vue({
el:'#app1',
data:{
isActive:true,
isError:false
}
});
</script>
</body>
</html>
当对象中的class类较多时,可以使用计算属性或methods属性来绑定,如下示例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://unpkg.com/vue/dist/vue.min.js"></script>
<title>Vue 示例</title>
</head>
<body>
<div id="app1">
<div class="static" :class="classes"></div>
</div>
<script>
var app1=new Vue({
el:'#app1',
data:{
isActive:true,
isError:false
},
computed:{
classes:function() {
return {active:this.isActive ,error:this.isError}
}
}
});
</script>
</body>
</html>
2.2、数组绑定法
数组绑定法就是给:class绑定一个数组,将data属性中的class类名引用到数组中,如下示例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://unpkg.com/vue/dist/vue.min.js"></script>
<title>Vue 示例</title>
</head>
<body>
<div id="app">
<!--经过渲染后active和error类会被应用到div标签上-->
<div :class="[activeCls,errorCls]"></div>
</div>
<script>
var app=new Vue({
el:'#app',
data:{
activeCls:'active',
errorCls:'error'
}
})
</script>
</body>
</html>
使用数组绑定法时可以通过三元表达式来动态控制class类是否应用,如下示例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://unpkg.com/vue/dist/vue.min.js"></script>
<title>Vue 示例</title>
</head>
<body>
<div id="app">
<!--此处error类将始终应用,active类将根据isActive的真假来控制是否应用-->
<div :class="[isActive ? activeCls : '',errorCls]"></div>
</div>
<script>
var app=new Vue({
el:'#app',
data:{
isActive:true,
activeCls:'active',
errorCls:'error'
}
})
</script>
</body>
</html>
三元表达式虽然可以动态控制class类是否应用,但是写起来比较复杂,为了在数组绑定法中能够动态控制class的应用与否我们还可以利用上面的对象绑定法,在数组绑定法中嵌套使用对象绑定法,如下示例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://unpkg.com/vue/dist/vue.min.js"></script>
<title>Vue 示例</title>
</head>
<body>
<div id="app">
<div :class="[{'active':isActive},errorCls]"></div>
</div>
<script>
var app=new Vue({
el:'#app',
data:{
isActive:true,
errorCls:'error'
}
})
</script>
</body>
</html>
与对象绑定法一样,我们也可以在数组绑定法中使用计算属性来绑定class类,如下示例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://unpkg.com/vue/dist/vue.min.js"></script>
<title>Vue 示例</title>
</head>
<body>
<div id="app">
<div :class="classes"></div>
</div>
<script>
var app=new Vue({
el:'#app',
data:{
size:'large',
disabled:true
},
computed:{
classes:function() {
<!--此处btn类始终应用,由于size值为large不为空,根据字符串拼接btn-large类被应用,当disabled为真时,btn-disabled类被应用-->
return ['btn',{['btn-'+this.size]:this.size !='',['btn-disabled']:this.disabled}]
}
}
})
</script>
</body>
</html>
2.3、组件绑定
我们可以在自定义Vue组件时在组件上应用class类,然后在调用该组件时再使用对象绑定法或数组绑定法在组件上继续绑定新的class类,在调用组件时绑定class类的方法只有当组件最外层是根元素才有效,如下示例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://unpkg.com/vue/dist/vue.min.js"></script>
<script>Vue.component('my-component',{template:'<p class='article'>自定义组件</p>'});</script>
<title>Vue 示例</title>
</head>
<body>
<div id="app">
<my-component:class="[activeCls,errorCls]"></my-component>
</div>
<script>
var app=new Vue({
el:'#app',
data:{
activeCls:'active',
errorCls:'error'
}
})
</script>
</body>
</html>
3、绑定内联样式
v-bind绑定内联样式的方法与绑定class类名的方法一致,也是使用对象绑定法和数组绑定法,其中对象绑定法在绑定内联样式时较为常用,另外还有计算属性在绑定内联样式时也较为常用,如下示例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://unpkg.com/vue/dist/vue.min.js"></script>
<title>Vue 示例</title>
</head>
<body>
<div id="app">
<!--v-bind渲染内联样式的语法糖为:style,此处渲染后的效果为<div style="color:red;font-size:14px;">文本</div>-->
<div :style="styles">文本</div>
</div>
<script>
var app=new Vue({
el:'#app',
data:{
<!--css属性名称使用驼峰命名或短横分隔命名-->
styles:{
color:'red',
fontSize:14+'px'
}
}
})
</script>
</body>
</html>
Vue基础第四章 - v-bind指令的更多相关文章
- Vue基础(环境配置、内部指令、全局API、选项、内置组件)
1.环境配置 安装VsCode 安装包管理工具:直接下载 NodeJS 进行安装即可,NodeJS自带 Npm 包管理工具,下载地址:https://nodejs.org/en/download/安装 ...
- JAVA基础第四章-集合框架Collection篇
业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...
- Vue.js-02:第二章 - 常见的指令的使用
一.前言 在上一章中,我们了解了一些在使用 Vue 进行开发中经常会遇到的基础概念,与传统的前端开发不同,Vue 可以使我们不必再使用 JavaScript 去操作 DOM 元素(还是可以用,但是极度 ...
- Vue基础第三章 - 计算属性
1.计算属性介绍 在第二章中我们介绍了在Vue的{{}}中可以使用一些简单的表达式进行计算,但是当表达式过长或者逻辑过于复杂就会变得不易理解和维护,比如第二章的示例{{ text.split(',') ...
- java基础(四章)
一. switch结构(开关语句)的语法 switch(表达式 ){ ------- [dream1]类型为int.char case 常量1 : ---------[ ...
- Python基础 第四章 字典(2)字典方法&章小结
1. clear 方法clear删除所有的字典项,就地执行,什么都不返回(或者说返回None) d = {} d['name'] = 'Gumby' d['age'] = 42 print(d) re ...
- Python基础 第四章 字典(1)
通过名称来访问其各个值的数据结构,映射(mapping). 字典,是Python中唯一的内置映射类型,其中的值不按顺序排列,而是存储在键下.(键,可能是数.字符串.元组). 1.1 字典由 键 及其相 ...
- jQuery Mobile 基础(第四章)
1.主题 jQuery Mobile 提供了5种不同的主题样式, 从 "a" 到 "e" - 每一种主题的按钮,工具条,内容块等等颜色都不一致,每个主题的视觉效 ...
- v:bind指令对于传boolean值的注意之处
1,
随机推荐
- DeepWalk 安装指南
DeepWalk 安装指南 创建 conda 虚拟环境 conda create -n deepwalk pip python=3.5 conda activate deepwalk 安装 deepw ...
- CSS二级菜单
0.需求:当鼠标hover到按钮上时,出现下拉菜单导航条. 1.问题拆解: (1)HTML应该如何组织比较方便合理 因为题中要求下拉菜单位于按钮的正下方,可以使用列表<li>中嵌套无序列表 ...
- redhat7.5 替换yum源
Redhat 7自带的yum源需要付费注册,未注册情况下会报如下错误,且用yum repolist all检查源数目为0.这时候需要将RedHat 7自带的yum源 替换成CentOS 7免费源 解决 ...
- CentOS7 下SaltStack部署
一,概念SaltStack是一个服务器基础架构集中化管理平台,具备配置管理.远程执行.监控等功能,一般可以理解为简化版的puppet和加强版的func.SaltStack基于Python语言实现,结合 ...
- Linux解决Python调用Matlab函数无法导入matlab.engine问题及其他注意事项
问题描述 Linux系统,根据matlab官方文档说明,利用Matlab中的API来实现Python调用Matlab函数.具体方法见文档: https://ww2.mathworks.cn/help/ ...
- Mysql 字段类型与查询类型不一致导致索引使用失败
今天优化数据库的慢查询,有一条Sql让我百思不得其jie,就是他了. SELECT * FROM test WHERE user_id=1; 用explain 去分析一下 索引都有了,为什么还要扫描全 ...
- JS ----- 底层原理
什么是JS JavaScript是一种基于对象的动态.弱类型脚本语言(简称JS),是一种解释型语言,和其他的编程语言不同,如java/C++等编译型语言,这些语言在代码执行前会进行通篇编译,先编译成字 ...
- AJAX得基本使用
直接上案例:
- python nonlocal 的具体原理
很多文章都大概列了下nonlocal的具体用法,比如看到几篇文章写的 “nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量” 看完以后我感觉自己是懂了,但光从这句话来说还没完全理解它 ...
- Javascript设计原则
Javascript设计原则 在面向对象的程序设计思想中, 我们能够遵循一些原则能够让我们开发代码时结构层次清晰, 更具说服力, 可谓是事半功倍. 做到这一点我们掌握一些程序设计原则是非常有利的, 如 ...