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 相关文章推荐
Firefox+FireBug使JQuery的学习更加轻松愉快
Jan 01 Javascript
JavaScript实现继承的4种方法总结
Oct 16 Javascript
jquery实现在光标位置插入内容的方法
Feb 05 Javascript
javascript通过获取html标签属性class实现多选项卡的方法
Jul 27 Javascript
jQuery.extend 函数及用法详细
Sep 06 Javascript
ajax在兼容模式下失效的快速解决方法
Mar 22 Javascript
最常见的左侧分类菜单栏jQuery实现代码
Nov 28 Javascript
Bootstrap基本组件学习笔记之列表组(11)
Dec 07 Javascript
微信小程序 本地数据读取实例
Apr 27 Javascript
javascript观察者模式实现自动刷新效果
Sep 05 Javascript
Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)
Aug 16 Javascript
微信小程序用户授权,以及判断登录是否过期的方法
May 10 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
40个迹象表明你还是PHP菜鸟
2008/09/29 PHP
PHPwind整合最土系统用户同步登录实现方法
2010/12/08 PHP
PHP连接MySQL查询结果中文显示乱码解决方法
2013/10/25 PHP
php中get_meta_tags()、CURL与user-agent用法分析
2014/12/16 PHP
最新最全PHP生成制作验证码代码详解(推荐)
2016/06/12 PHP
PHP实现获取url地址中顶级域名的方法示例
2019/06/05 PHP
5分钟理解JavaScript中this用法分享
2013/11/09 Javascript
自己使用jquery写的一个无缝滚动的插件
2014/04/30 Javascript
javascript校验价格合法性实例(必须输入2位小数)
2014/05/05 Javascript
Nodejs进程管理模块forever详解
2014/06/01 NodeJs
node.js中的fs.symlinkSync方法使用说明
2014/12/15 Javascript
移动端JQ插件hammer使用详解
2015/07/03 Javascript
jquery实现表格隔行换色效果
2015/11/19 Javascript
JavaScript中windows.open()、windows.close()方法详解
2016/07/28 Javascript
浅析Ajax语法
2016/12/05 Javascript
微信小程序 Toast自定义实例详解
2017/01/20 Javascript
vue2.0之多页面的开发的示例
2018/01/30 Javascript
基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法
2018/12/09 Javascript
[01:11:08]Winstrike vs NB 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
Python Web框架Flask信号机制(signals)介绍
2015/01/01 Python
python协程用法实例分析
2015/06/04 Python
python计算阶乘和的方法(1!+2!+3!+...+n!)
2019/02/01 Python
python将邻接矩阵输出成图的实现
2019/11/21 Python
在Sublime Editor中配置Python环境的详细教程
2020/05/03 Python
Python下划线5种含义代码实例解析
2020/07/10 Python
python实现企业微信定时发送文本消息的示例代码
2020/11/24 Python
中国跨境电商:Tomtop
2017/03/16 全球购物
Baracuta官方网站:Harrington夹克,G9,G4,G10等
2018/03/06 全球购物
英国最大的在线蜡烛商店:Candles Direct
2019/03/26 全球购物
Ajxa常见问题都有哪些
2014/03/26 面试题
JSP&Servlet技术面试题
2015/05/21 面试题
幼教毕业生自我鉴定
2014/01/12 职场文书
2014年学校党建工作总结
2014/11/11 职场文书
关于公司年会的开幕词
2016/03/04 职场文书
快消品行业营销模式与盈利模式分享
2019/09/27 职场文书
如何开发一个渐进式Web应用程序PWA
2021/05/10 Javascript