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 相关文章推荐
pjblog修改技巧汇总
Mar 12 Javascript
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
Oct 20 Javascript
Js中的onblur和onfocus事件应用介绍
Aug 27 Javascript
JavaScript制作淘宝星级评分效果的思路
Jun 23 Javascript
全面解析Bootstrap表单使用方法(表单按钮)
Nov 24 Javascript
JS DOM实现鼠标滑动图片效果
Sep 17 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
May 16 Javascript
微信小程序canvas分享海报功能
Oct 31 Javascript
解决node.js含有%百分号时发送get请求时浏览器地址自动编码的问题
Nov 20 Javascript
原生javascript制作贪吃蛇小游戏的方法分析
Feb 26 Javascript
Vue Router 实现动态路由和常见问题及解决方法
Mar 06 Javascript
详谈Object.defineProperty 及实现数据双向绑定
Jul 18 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常用正则表达式集锦
2014/08/17 PHP
PHP制作万年历
2015/01/07 PHP
Symfony2实现在controller中获取url的方法
2016/03/18 PHP
如何在PHP中使用AES加密算法加密数据
2020/06/24 PHP
js 小数取整的函数
2010/05/10 Javascript
基于JQuery的多标签实现代码
2012/09/19 Javascript
JavaScript学习笔记之内置对象
2015/01/22 Javascript
JavaScript实现仿新浪微博大厅和腾讯微博首页滚动特效源码
2015/09/15 Javascript
Bootstrap每天必学之警告框插件
2016/04/26 Javascript
浅析JS异步加载进度条
2016/05/05 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
2016/09/24 Javascript
JavaScript提高加载和执行效率的方法
2017/02/03 Javascript
微信小程序页面传值实例分析
2017/04/19 Javascript
React Native仿美团下拉菜单的实例代码
2017/08/08 Javascript
详解Vue-cli中的静态资源管理(src/assets和static/的区别)
2018/06/19 Javascript
nodejs 递归拷贝、读取目录下所有文件和目录
2019/07/18 NodeJs
如何对react hooks进行单元测试的方法
2019/08/14 Javascript
关于vue组件事件属性穿透详解
2019/10/28 Javascript
Vue中使用matomo进行访问流量统计的实现
2019/11/05 Javascript
[09:33]2015国际邀请赛第四日TOP10
2015/08/08 DOTA
Python文件及目录操作实例详解
2015/06/04 Python
获取python的list中含有重复值的index方法
2018/06/27 Python
详解python实现交叉验证法与留出法
2019/07/11 Python
Python爬虫:url中带字典列表参数的编码转换方法
2019/08/21 Python
基于Django实现日志记录报错信息
2019/12/17 Python
python 子类调用父类的构造函数实例
2020/03/12 Python
Python列表元素删除和remove()方法详解
2021/01/04 Python
美国宠物护理专家:Revival Animal Health
2020/01/05 全球购物
Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别?
2012/06/05 面试题
小学门卫岗位职责
2013/12/17 职场文书
民生工作实施方案
2014/05/31 职场文书
农村党支部书记司法四风问题对照检查材料
2014/09/26 职场文书
大学生党员批评与自我批评
2014/09/28 职场文书
2014年财务科工作总结
2014/11/11 职场文书
会计专业求职信范文
2015/03/19 职场文书
观后感开头
2015/06/19 职场文书