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 相关文章推荐
超级兔子让浮动层消失的前因后果
Mar 09 Javascript
两种WEB下的模态对话框 (asp.net或js的分别实现)
Dec 02 Javascript
比较详细的关于javascript 解析json的代码
Dec 16 Javascript
理解Javascript_03_javascript全局观
Oct 11 Javascript
javascript学习笔记(五) Array 数组类型介绍
Jun 19 Javascript
javascript显式类型转换实例分析
Apr 25 Javascript
纯JS实现表单验证实例
Dec 24 Javascript
使用socket.io制做简易WEB聊天室
Jan 02 Javascript
webpack之引入图片的实现及问题
Oct 08 Javascript
node app 打包工具pkg的具体使用
Jan 17 Javascript
JS实现拼图游戏
Jan 29 Javascript
Vue打包部署到Nginx时,css样式不生效的解决方式
Aug 03 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
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
PHP ? EasyUI DataGrid 资料存的方式介绍
2012/11/07 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
详解PHP中curl_multi并发的实现
2020/06/08 PHP
CSDN轮换广告图片轮换效果
2007/03/27 Javascript
jquery HotKeys轻松搞定键盘事件代码
2008/08/30 Javascript
js对象之JS入门之Array对象操作小结
2011/01/09 Javascript
js中关于String对象的replace使用详解
2011/05/24 Javascript
Jquery实现网页跳转或用命令打开指定网页的解决方法
2013/07/09 Javascript
JavaScript Serializer序列化时间处理示例
2014/07/31 Javascript
chrome不支持form.submit的解决方案
2015/04/28 Javascript
JS实现Select的option上下移动的方法
2016/03/01 Javascript
Bootstrap table分页问题汇总
2016/05/30 Javascript
JS for...in 遍历语句用法实例分析
2016/08/24 Javascript
轻松掌握JavaScript中介者模式
2016/08/26 Javascript
Vue.js实现可配置的登录表单代码详解
2018/03/29 Javascript
微信小程序实现两边小中间大的轮播效果的示例代码
2018/12/07 Javascript
小程序实现左滑删除效果
2019/07/25 Javascript
vue-router两种模式区别及使用注意事项详解
2019/08/01 Javascript
详解nuxt 微信公众号支付遇到的问题与解决
2019/08/26 Javascript
Python多进程同步Lock、Semaphore、Event实例
2014/11/21 Python
Python基于有道实现英汉字典功能
2015/07/25 Python
基于Django的python验证码(实例讲解)
2017/10/23 Python
Python中捕获键盘的方式详解
2019/03/28 Python
python中while和for的区别总结
2019/06/28 Python
python基于pdfminer库提取pdf文字代码实例
2019/08/15 Python
详解Python IO编程
2020/07/24 Python
python 基于pygame实现俄罗斯方块
2021/03/02 Python
Html5移动端获奖无缝滚动动画实现示例
2018/06/25 HTML / CSS
澳大利亚领先的在线葡萄酒零售商:Get Wines Direct
2018/03/27 全球购物
师范生的个人求职信范文
2014/01/04 职场文书
设备售后服务承诺书
2014/05/30 职场文书
活动总结报告怎么写
2014/07/03 职场文书
四风问题个人剖析材料
2014/10/07 职场文书
手机销售员岗位职责
2015/04/11 职场文书
7个你应该知道的JS原生错误类型
2021/04/29 Javascript