Vue中的数据绑定

v-bind

  • 缩写:
  • 预期:any (with argument) | Object (without argument)
  • 参数:attrOrProp (optional)
  • 主要作用:可以给html元素或者组件动态地绑定一个或多个特性,例如动态绑定styleclass

官方举例:

<!-- bind an attribute -->
<img v-bind:src="imageSrc">
<!-- shorthand -->
<img :src="imageSrc">
<!-- class binding -->
<div :class="{ red: isRed }"></div>
<div :class="[classA, classB]"></div>
<div :class="[classA, { classB: isB, classC: isC }]">
<!-- style binding -->
<div :style="{ fontSize: size + 'px' }"></div>
<div :style="[styleObjectA, styleObjectB]"></div>
<!-- binding an object of attributes -->
<div v-bind="{ id: someProp, 'other-attr': otherProp }"></div>
<!-- prop binding. "prop" must be declared in my-component. -->
<my-component :prop="someThing"></my-component>
<!-- two-way prop binding -->
<my-component :prop.sync="someThing"></my-component>
<!-- one-time prop binding -->
<my-component :prop.once="someThing"></my-component>

源码

<!-- v-bind数据绑定 -->
<!--数据绑定-->
<input type="text" v-bind:value="name">
<!--数据绑定简写-->
<input type="text" :value="name">
<a v-bind="{href:'http://aa/' + id}">跳转</a>
var vm = new Vue({
    el:'#app'
    ,data:{
        name:'张三'
        ,id:1
    }
});

结果

在这里插入图片描述

  从上面的图中我们可以看出v-bind:value:value均能将name字段绑定到文本框中,而第三个则将用v-bind绑定超链接并传参,其传递的参数成功的绑定到了超链接上,如下所示的超链接内容;

在这里插入图片描述

v-model

  • 主要作用:在表单控件或者组件上创建双向数据绑定

  • 使用范围:

    • <input>
    • <select>
    • <textarea>
  • 参数属性

    • lazy
    • number
    • debounce

源码

<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml" xmlns:v-bind="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Vue</title>
</head>
<body>
    <div id="app">
        <!-- v-model双向数据绑定 -->
        <input type="text" placeholder="请输入姓" id="lastname" v-model="fullname.lastname">
        <input type="text" placeholder="请输入名" id="firstname" v-model="fullname.firstname">
        <button @click="alertDialog()">弹出</button>
    </div>
</body>
<!--1、导入Vue的js文件 -->
<script src="../../../js/vue/vue/1.0/vue.js"></script>
<script type="application/javascript">
    var vm = new Vue({
        el:'#app'
        ,data:{
            fullname:{
                firstname:''
                ,lastname:''
            }
        }
        ,methods:{
            alertDialog(){
                alert(this.fullname.lastname + this.fullname.firstname);
            }
        }
    });
</script>
</html>

结果

在这里插入图片描述

  如上图中我们可以看出(动图),使用v-model,在文本框中输入内容后能够成功弹出姓名全称,而在控制台中,我们通过变更控制台中的数据对象,其文本框中对应的数据也会随之发生改变,而该改变之后的数据也能够成功的弹出并正确的现实出来,这就是数据的双向绑定操作。

完整源码

<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml" xmlns:v-bind="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Vue</title>
</head>
<body>
    <div id="app">
        <!-- v-bind数据绑定 -->
        <!--数据绑定-->
        <input type="text" v-bind:value="name">
        <!--数据绑定简写-->
        <input type="text" :value="name">
        <a v-bind="{href:'http://aa/' + id}">跳转</a>
        <hr>
        <!-- v-model双向数据绑定 -->
        <input type="text" placeholder="请输入姓" id="lastname" v-model="fullname.lastname">
        <input type="text" placeholder="请输入名" id="firstname" v-model="fullname.firstname">
        <button @click="alertDialog()">弹出</button>
    </div>
</body>
<!--1、导入Vue的js文件 -->
<script src="../../../js/vue/vue/1.0/vue.js"></script>
<script type="application/javascript">
    var vm = new Vue({
        el:'#app'
        ,data:{
            name:'张三'
            ,id:1
            ,fullname:{
                firstname:''
                ,lastname:''
            }
        }
        ,methods:{
            alertDialog(){
                alert(this.fullname.lastname + this.fullname.firstname);
            }
        }
    });
</script>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值