Vue.js中用v-bind绑定class的注意事项


Posted in Javascript onDecember 13, 2016

前言

在Vue.js版本:1.0.27,使用Vue.js中V-bind指令来绑定class和style时,Vue.js对其进行了增强。表达式结果出了字符串之外,还可以是对象或者数组。

这里自己对其进行了测试,发现有一下的问题:

如果使用对象语法对class进行绑定话,class名称必须加上引号,代表所对应的样式,否则会将其当做对象的属性,从而使得初始化报错。

<!DOCTYPE html> 
<html lang="en"> 
 
<head> 
 <meta charset="UTF-8"> 
 <title>Document</title> 
 <script src="http://cdn.bootcss.com/vue/1.0.27/vue.js"></script> 
 <style> 
 .static { 
 font-size: 120px; 
 width: 600px; 
 margin: 0 auto; 
 background-color: yellow; 
 height: 120px; 
 line-height: 120px; 
 text-align: center; 
 } 
 
 .class-a { 
 color: #FF0000; 
 } 
 
 .class-b { 
 text-decoration: underline; 
 } 
 </style> 
</head> 
 
<body> 
 <div id="app"> 
 <div v-bind:class="classObject"> 
 关于class的绑定 
 </div> 
 </div> 
 <script> 
 var vm = new Vue({ 
 el: '#app', 
 data: { 
 classObject: { 
 //'class-a',不能写成class-a(不带引号);这里的classObject是js对象,而class-b是代表的是一个样式,所以必须写成'class-a',用引号括起来。 
 //否则这里的class-a只能代表classObject的一个属性名称而已,这样vuejs在初始化时,会报错。 
 'class-a':false, 
 'class-b': true 
 } 
 } 
 }); 
 </script> 
</body> 
 
</html>

参考资料:

Vue.js官网----http://cn.vuejs.org/guide/class-and-style.html

补充:

在这里,自己感觉代码中的classObject有点像散列表,key是一个样式class,而value是boolean类型的值。

从console中获取和改变classObject对象中class-a值,见下图:

Vue.js中用v-bind绑定class的注意事项

看到console中操作,让我觉得对于classObject确实有点像散列表类型。为了证实这个,可以去看看源码(ps:自己没看)。

在Vue.js1.0.19,作者为其添加了一些语法,在数组也可以使用对象语法:

<div v-bind:class="[classA, { 'classB': isB, 'classC': isC }]">class绑定</div>

<div v-bind:class="[classA, { classB: isB, classC: isC }]">class绑定</div>

上面,对于classA可以加引号和不加引号,下面是自己的测试代码。

<!DOCTYPE html> 
<html lang="en"> 
 
<head> 
 <meta charset="UTF-8"> 
 <title>Document</title> 
 <script src="http://cdn.bootcss.com/vue/1.0.27/vue.js"></script> 
 <style> 
 .static { 
 font-size: 120px; 
 width: 600px; 
 margin: 0 auto; 
 background-color: yellow; 
 height: 120px; 
 line-height: 120px; 
 text-align: center; 
 } 
 
 .class-a { 
 color: #FF0000; 
 } 
 
 .classB { 
 text-decoration: underline; 
 } 
 
 .classC{ 
 text-shadow: 2px 2px 4px #000000; 
 } 
 </style> 
</head> 
 
<body> 
 <div id="app"> 
 <!-- 两种绑定:加引号和不加引号,都可以 --> 
 <div v-bind:class="[classA, { 'classB': isB, 'classC': isC }]">class绑定</div> 
 <div v-bind:class="[classA, { classB: isB, classC: isC }]">class绑定</div> 
 </div> 
 <script> 
 var vm = new Vue({ 
 el: '#app', 
 data: { 
 classA: 'class-a', 
 isB: true, 
 isC: true 
 } 
 
 }); 
 </script> 
</body> 
 
</html>

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
List the UTC Time on a Computer
Jun 11 Javascript
jquery中dom操作和事件的实例学习-表单验证
Nov 30 Javascript
JS实现将人民币金额转换为大写的示例代码
Feb 13 Javascript
javascript(js)的小数点乘法除法问题详解
Mar 07 Javascript
jQuery获取选中内容及设置元素属性的方法
Jul 09 Javascript
jQuery可见性过滤器:hidden和:visibility用法实例
Jun 24 Javascript
javascript Promise简单学习使用方法小结
May 17 Javascript
浅谈jQuery双事件多重加载的问题
Oct 05 Javascript
AngularJS中指令的四种基本形式实例分析
Nov 22 Javascript
详解react、redux、react-redux之间的关系
Apr 11 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
May 13 Javascript
基于js实现数组相邻元素上移下移
May 19 Javascript
AngularJS中的Promise详细介绍及实例代码
Dec 13 #Javascript
JS中事件冒泡和事件捕获介绍
Dec 13 #Javascript
AngularJS入门教程之路由机制ngRoute实例分析
Dec 13 #Javascript
解决Window10系统下Node安装报错的问题分析
Dec 13 #Javascript
浅析Jquery操作select
Dec 13 #Javascript
Vue.js使用v-show和v-if的注意事项
Dec 13 #Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
Dec 13 #Javascript
You might like
如何在PHP中使用Oracle数据库(4)
2006/10/09 PHP
php中静态类与静态变量用法的区别分析
2015/01/15 PHP
php 参数过滤、数据过滤详解
2015/10/26 PHP
phpStorm+XDebug+chrome 配置详解
2019/04/01 PHP
IE8 浏览器Cookie的处理
2009/01/31 Javascript
Jquery中LigerUi的弹出编辑框(实现方法)
2013/07/09 Javascript
jQuery中attr()和prop()在修改checked属性时的区别
2014/07/18 Javascript
JavaScript中的闭包(Closure)详细介绍
2014/12/30 Javascript
学习JavaScript设计模式之中介者模式
2016/01/14 Javascript
axios学习教程全攻略
2017/03/26 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
2017/07/10 Javascript
JS实现弹出下载对话框及常见文件类型的下载
2017/07/13 Javascript
jQuery:unbind方法的使用详解
2017/08/14 jQuery
在React中写一个Animation组件为组件进入和离开加上动画/过度效果
2019/06/24 Javascript
微信小程序实现搜索框功能及踩过的坑
2020/06/19 Javascript
vue3弹出层V3Popup实例详解
2021/01/04 Vue.js
JavaScript 获取滚动条位置并将页面滑动到锚点
2021/02/08 Javascript
[02:03]完美世界DOTA2联赛10月30日赛事集锦
2020/10/31 DOTA
零基础写python爬虫之抓取糗事百科代码分享
2014/11/06 Python
python自动格式化json文件的方法
2015/03/11 Python
python计算文本文件行数的方法
2015/07/06 Python
python实现文件路径和url相互转换的方法
2015/07/06 Python
详解Python if-elif-else知识点
2018/06/11 Python
python求最大公约数和最小公倍数的简单方法
2020/02/13 Python
详解python的xlwings库读写excel操作总结
2021/02/26 Python
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
HTML5 表单验证失败的提示语问题
2017/07/13 HTML / CSS
New Balance德国官方网站:购买鞋子和服装
2019/08/31 全球购物
JPA的特点
2014/10/25 面试题
优秀党支部事迹材料
2014/01/14 职场文书
公务员更新知识培训实施方案
2014/03/31 职场文书
中学生教师节演讲稿
2014/09/03 职场文书
老干部工作汇报材料
2014/10/28 职场文书
2015年领导班子工作总结
2015/05/23 职场文书
嘉年华活动新闻稿
2015/07/17 职场文书
opencv-python图像配准(匹配和叠加)的实现
2021/06/23 Python