javascript - 为什么Vue的三元表达式切换Class失灵?
怪我咯
怪我咯 2017-04-11 11:49:38
[JavaScript讨论组]

代码:

    发送

    /**
    *   计算属性没有问题,能够正常返回 isDisabled 的 true or false, 但是 html class 没有实时切换为什么?
    */
computed:{
             isDisabled () {
         if (this.userQuestion !== '') {
             return false
         } else {
              return true
         }
      },
}

老哥们,方法都试了,都能正确响应可是问题是不能实时更新,一直按照一开始渲染的样式来的,摔~!

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(8)
大家讲道理

我测试了下没问题呀,有没有完整代码

高洛峰

是不是应该类似这样的?

:class="[isDisabled ? 'notSend' : 'send']"

class binding

阿神

vue语法设计时,为什么没有那样考虑我不太清楚,但是三元表达式在做两个值得切换比较容易,多个就显得很繁琐。vue提供了更加优雅的写法来切换class,数组语法。
假设我们有red,blue,green三个类需要切换,代码这样写就可以。

<!DOCTYPE html>
<html>
<head>
    <title>vue操作class</title>
    <style>
        .box{
            width:100px;
            height:100px;
            border:1px solid #ccc;
        }
        .red{
            background:red;
        }

        .blue{
            background:blue;
        }

        .green{
            background: green;
        }
    </style>
    <script src='//cdn.bootcss.com/vue/2.1.2/vue.js'></script>
</head>
<body>
<p id="app">
    <p class="box" :class='[myClass]'></p>
</p>
<script>
    var vm = new Vue({
        el:'#app',
        data:{
            myClass:'green'
        }
    });
</script>
</body>
</html>

需要切换的话,只用vm.myClass='blue',即切换myClass属性就可以达到切换类的目的。
对类(class)的操作,一般有增删改查四种。vue中,对于类的增删,用对象语法{active:isActive}来解决。isActive=true,就增,为false就删除。对于"改",也就是替换,用的是数组语法,即上列中的语法。数组语法更强大,可以同时切换多个,比如上列中的三个。

高洛峰

没仔细看你问题,不过三元表达式可以尝试写在一个数组里,官方Demo就是这样写的

巴扎黑

试了一下。用的Vue2.0吗?是不是el绑在body上了?

天蓬老师

:class="{isDisabled ? 'notSend' : 'send' } "

用一个对象包起来

伊谢尔伦

写的不正确吧

高洛峰
因为你已经用了class这个属性了,你vue就得用:class1=" isDisabled ? 'notSend' : 'send' ",这样就不会冲突了。
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号