Vue.js: Conditional class style binding

后端 未结 5 789
难免孤独
难免孤独 2020-11-28 08:51

I have some data that is accessible via:

{{ content[\'term_goes_here\'] }}

... and this evaluated to either true or fals

相关标签:
5条回答
  • 2020-11-28 09:29

    if you want to apply separate css classes for same element with conditions in Vue.js you can use the below given method.it worked in my scenario.

    html

     <div class="Main" v-bind:class="{ Sub: page}"  >
    

    in here, Main and Sub are two different class names for same div element. v-bind:class directive is used to bind the sub class in here. page is the property we use to update the classes when it's value changed.

    js

    data:{
    page : true;
    }
    

    here we can apply a condition if we needed. so, if the page property becomes true element will go with Main and Sub claases css styles. but if false only Main class css styles will be applied.

    0 讨论(0)
  • 2020-11-28 09:31

    the problem is blade, try this

    <i class="fa" v-bind:class="['{{content['cravings']}}' ? 'fa-checkbox-marked' : 'fa-checkbox-blank-outline']"></i>
    
    0 讨论(0)
  • 2020-11-28 09:38
    <i class="fa" v-bind:class="cravings"></i>
    

    and add in computed :

    computed: {
        cravings: function() {
            return this.content['cravings'] ? 'fa-checkbox-marked' : 'fa-checkbox-blank-outline';
        }
    }
    
    0 讨论(0)
  • 2020-11-28 09:39

    Use the object syntax.

    v-bind:class="{'fa-checkbox-marked': content['cravings'],  'fa-checkbox-blank-outline': !content['cravings']}"
    

    When the object gets more complicated, extract it into a method.

    v-bind:class="getClass()"
    
    methods:{
        getClass(){
            return {
                'fa-checkbox-marked': this.content['cravings'],  
                'fa-checkbox-blank-outline': !this.content['cravings']}
        }
    }
    

    Finally, you could make this work for any content property like this.

    v-bind:class="getClass('cravings')"
    
    methods:{
      getClass(property){
        return {
          'fa-checkbox-marked': this.content[property],
          'fa-checkbox-blank-outline': !this.content[property]
        }
      }
    }
    
    0 讨论(0)
  • 2020-11-28 09:51

    Why not pass an object to v-bind:class to dynamically toggle the class:

    <div v-bind:class="{ disabled: order.cancelled_at }"></div>
    

    This is what is recommended by the Vue docs.

    0 讨论(0)
提交回复
热议问题