第三天(Vue双向数据绑定,computed属性,动态css绑定)

第三天(Vue双向数据绑定,computed属性,动态css绑定)

Vue双向数据绑定

双向数据绑定一般用于input,select,textarea,我们看示例。

 <div id="vue-app">
    姓名: <input ref="username" type="text" v-on:keyup.enter="logName">{{name}}<br>
    年龄: <input v-model="age" type="text">{{age}}
 </div>
new Vue({
    el:"#vue-app",
    data:{
        name:"",
        age:""
    },
    methods:{
        logName:function(){
            this.name=this.$refs.username.value;
        }
    }
})

显示效果

在上面的示例中,HTML中的text于我们的vue对象属性绑定的有两种方式,可以在input这个dom对象中添加一个ref属性,然后可以在js中使用this.$refs.username.value来获取这个值,其中的username是html中对应的ref属性的值;另一种方式是使用v-model=”name”来将这个输入框中的值与对应的name属性来绑定,一旦输入框中的值发生改变,name属性值也会发生改变。

Vue computed属性

还是先从代码开始:

<div id="vue-app">
   <button v-on:click="a++">a+1</button>
   <button v-on:click="b++">b+1</button><br>
   A的值-----{{a}}<br>
   B的值-----{{b}}<br>
   C的值-----{{c}}<br>
   <p>A+C={{addAToC}}</p>
   <p>B+C=={{addBToC}}</p>
</div>
new Vue({
    el:"#vue-app",
    data:{
        a:1,
        b:2,
        c:3
    },
    methods:{
        // addAToC:function(){
        //  console.log("a+c执行");
        //  return this.a+this.c;
        // },
        // addBToC:function(){
        //  console.log("b+c执行");
        //  return this.b+this.c;
        // }
    },
    computed:{
        addAToC:function(){
            console.log("a+c执行");
            return this.a+this.c;
        },
        addBToC:function(){
            console.log("b+c执行");
            return this.b+this.c;
        }
    }
})

上面是使用的computed属性,computed属性与methods相似,大家可以尝试分别注释methods和computed中的代码来查看效果(注意在控制台查看输出),这里我作简单的解释,当以上面的代码执行时,在页面中点击a+1按钮或者b+1按钮的时候,computed属性中的方法只有一个会执行,而当方法是放在methods中,注释computed中的代码时,methods中任何与属性c有关方法都会被执行。至于为什么要有computed这么一个属性,其实我也不是很清楚,我想应该是为了在更复杂更大量的运算中,能够加快运算速度等等,我想这个问题我还有待去学习发掘。

Vue 动态绑定css样式

下面分别是示例的html,css,js代码

<div id="vue-app">
    <!-- <h2>示例1</h2>
    <div v-on:click="ischangecolor=!ischangecolor" v-bind:class="{changecolor:ischangecolor}">
          <span>Henry</span>
    </div> -->

    <h2>示例2</h2>
    <button v-on:click="ischangecolor=!ischangecolor">改变颜色</button>
    <button v-on:click="ischangelength=!ischangelength">改变长度</button>
    <div v-bind:class="compClasses">
       <span>this</span>
    </div>
</div>
span{
    background: red;
    display: inline-block;
    padding: 10px;
    color: #fff;
    margin: 10px 0
}

.changecolor span{
    background: green
}

.changelength span:after{
    content: "length";
    margin-left: 10px;
}
new Vue({
    el:"#vue-app",
    data:{
        ischangecolor:false,
        ischangelength:false
    },
    methods:{

    },
    computed:{
        compClasses:function(){
            return{
                changecolor:this.ischangecolor,
                changelength:this.ischangelength
            }
        }
    }
})

这里我不知道该怎么组织语言,就算给自己一个笔记点吧,用作自己以后复习用,讲解动态css绑定知识我找到这位老兄的博客可以参考——CLASS与样式绑定

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值