class & style

在操作DOM的过程中,修改元素的class与内联样式是数据绑定的常见需求,我们可以使用v-bind处理它们,可以通过表达式计算结果,但是字符串的拼接比较麻烦还容易出错,对此vue做了一定的增强

<div class="static" v-bind:class={"active":isActive,"text-danger":hasError}></div>
vm.$data={
    isActive:ture,
    hasError:false
}
//最终的渲染结果
<div class="static active"></div>
  • 进一步的改进,将class整个对象在实例对象中声明,脱离DOM存在

<div class="static" v-bind:class="classObject"></div>
vm.$data.classObject={
    active:true,
    text-danger:false
}
  • 将class对象存储在计算属性中,这样就能根据数据特性进行计算得到最终要的class对象

    <div v-bind:class="classObject"></div>
    .data:{
        isActive:ture,
        erroe:null
    }
    .computed:{
        classObject:function(){
            return{
                active:this.isActive && !this.error,
                'text-danger': this.error && this.error.type=='fatal'
            }
        }
    }

2. 绑定到自定义组件上

//声明自定义组件
vm.component('my-component',{
    template:'<p class="foo bar"></p>'
})
//在自定义组件中添加class
<my-component class="active"></my-component>
//最终渲染的结果
<p class="foo bar active"></p>


//使用v-bind进行渲染
<my-component v-bind:class="{active: true}"></my-component>

3.绑定到内联样式上

<div v-bind:style="styleObject"></div>
vm.$data.styleObject={
    color:red,
    font-size:30px
}

Last updated