鱼C论坛

 找回密码
 立即注册
查看: 1881|回复: 6

[庖丁解牛] 009 V 绑定class之对象语法

[复制链接]
发表于 2018-9-6 17:36:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 不二如是 于 2018-9-6 18:14 编辑


                               
登录/注册后可看大图


上一讲我们搞定了计算属性的玩法,本次来学习用对象语法来绑定class

006 V 指令+事件+语法糖我们介绍了v-bind,以及其简略写法":"

我们给v-bing:class设置一个对象,达到动态切换class,代码:
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.     <meta name="keywords" content="小甲鱼,Web开发,HTML5,CSS3,Web编程教学">
  7.     <meta name="description" content="《Vue-庖丁解牛》案例演示">
  8.     <meta name="author" content="鱼C工作室">
  9.     <title>鱼C-Vue</title>
  10.     <script src="js/vue.js"></script>
  11. </head>
  12. <body>
  13. <div id="myApp">
  14.     <div :class="{'active':isActive}"></div>
  15. </div>

  16. <script>
  17.     var app = new Vue({
  18.         el:"#myApp",
  19.         data:{
  20.             isActive:true
  21.         }
  22.     })
  23. </script>
  24. </body>
  25. </html>
复制代码

在这段代码中,类名active依赖于数据isActive,当为true,div会拥有类名Active。

反之,false,则不会添加类名。

最终渲染结果:
Snip20180906_262.png


对象中还可以传入多个属性,这样就能切换多个属性,:class(v-bind:class)可以和普通的class共存。

创建div:
  1. <div id="myApp">
  2.     <div class="fishc" :class="{'active':isActive,'error':isError}"></div>
  3. </div>
复制代码


内层div有一个默认的普通类名fishc,然后通过:classs添加了两个类名(均为真才会添加)。

创建Vue实例:
  1. <script>
  2.     var app = new Vue({
  3.         el:"#myApp",
  4.         data:{
  5.             isActive:true,
  6.             isError:false
  7.         }
  8.     })
  9. </script>
复制代码

Snip20180906_263.png


在Vue实例中,isActive为true,成功添加isActive类;isError为false,所以添加失败。

现在修改isError为true:
Snip20180906_265.png


当:class的表达式过长或者逻辑复杂时,还可以绑定一个计算属性,很常用的用法。

一般当条件多于两个时,可以使用data或computed。

创建div:
  1. <div id="myApp">
  2.     <div :class="myClass"></div>
  3. </div>
复制代码


创建Vue实例:
  1. <script>
  2.     var app = new Vue({
  3.         el:"#myApp",
  4.         data:{
  5.             isActive:true,
  6.             isError:null
  7.         },
  8.         computed:{
  9.             myClass:function () {
  10.                 return{
  11.                     active:this.isActive && !this.error,
  12.                     'text-fail':this.error && this.error.type == 'fail'
  13.                 }
  14.             }
  15.         }
  16.     })
  17. </script>
复制代码


我们把复杂的表达式独立出来,放在computed中通过计算属性来完成。




课后作业


1、:class可以和普通的class共存?(T/F)

2、完成修改isError,为div添加isError类



答案:
游客,如果您要查看本帖隐藏内容请回复





如果有收获,别忘了评分


                               
登录/注册后可看大图


这位鱼油,如果喜欢Vue,请订阅 专辑传送门)(不喜欢更要订阅



                               
登录/注册后可看大图

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-10-11 15:08:33 | 显示全部楼层
已学习,谢谢老板
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-26 23:27:28 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-8 12:17:16 | 显示全部楼层
T
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-5 12:50:12 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-19 14:35:14 | 显示全部楼层
00
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-23 20:16:55 | 显示全部楼层
T
isError:true
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-7 01:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表