vue属性绑定:v-bind指令

1. 基本语法

  • 语法: v-bind:属性名.修饰符="属性值"
  • 简写: :属性名.修饰符 = "属性值"
  • 属性名
    • h5中有意义的属性名
    • DOM属性名(className,innerHTML) ==>将驼峰转为连字符“-”,并添加修饰符.prop
    • vue绑定属性时是以html属性为基准的,h5中是不存在大小写的
  • 属性值: data数据仓库中的变量名
  • 修饰符: prop,用于修饰当绑定的属性为DOM属性时

2. 功能

  • 将标签的属性以vue语法的方式绑定动态数据

3. 特殊属性

  • boolean属性: input文本框的disabled 
    • 语法: :disabled="属性值"
    • 属性值:JS中可以转换成boolean的一切变量
    • 空字符串"" 以及0: 返回true, 文本框是禁用状态, 这点不同于原生JS
    • null以及undefined: 返回false,文本框是启用状态
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script src="./vue.js"></script>
    <title>Document</title>
</head>
<body>
    <div id="app">

        <input type="text" :disabled="flag">
        <br>
        <br>

        <!-- 需求:点击发送验证码,按钮禁用,按钮文本改为“重新发送(60s)” ,并且后面的数字动态减少,当数字减少到小于等于0时
            按钮重新启用,按钮的文本重新恢复成发送验证码
        -->
        <input type="button" :value="val" :disabled="flag" @click="sendCode">
    </div>
    <script>
        new Vue({
            el:"#app",
            data:{
                flag: false,
                val:"发送验证码",
                num: 10
                // flag: "", //禁用
                //flag:0, //禁用
                // flag: null, //启用
                // flag: undefined //启用
            },
            methods:{
                sendCode(){
                    //按钮禁用
                    this.flag = true;
                    this.val = "重新发送(" + this.num + "s)";
                    //按钮文本改为重新发送
                    var timer = setInterval(()=>{ //这边必须使用箭头函数,因为这边是作为一个回调函数存在在这里的,回调函数的this是指向于回调函数调用时的上下文,即window,而箭头函数在new对象中是恒指向于new出来的实例的
                        if(this.num <= 0){ //当计时结束后,清除计时器
                            clearInterval(timer);
                            this.flag = false;
                            this.val = "发送验证码";
                            this.num = 10;
                        }else{
                            this.num --;
                            this.val = "重新发送(" + this.num + "s)";
                        }
                    },1000)
                    
                }
            }
        }) 
    </script>
</body>
</html>
  • class属性 
    • 语法: :class="属性值" ||  :classNam.prop = "属性值"
    • 属性值
      • 字符串: 实现样式的快速部署,注意样式前需要加空格
      • 数组:实现样式的动态追加,注意删除的时候,没办法控制具体删除哪个样式,只能根据数组中的元素的顺序进行删除
      • 对象:实现样式的互斥,
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script src="./vue.js"></script>
    <style>
        .fc{
            color: red;
        }
        .bc{
            background: #ccc;
        }
        .sta{
            background:#ccc;
        }
        .success{
            background: orange;
        }
        .error{
            background: green;
        }
    </style>
    <title>class属性绑定</title>
</head>
<body>
    <div id="app">
        <!-- 字符串 -->
        <div :class="classStr">属性绑定</div>
        <button @click="addBc">添加背景色</button>
        <!-- 数组 -->
        <div :class="classArr">属性绑定</div>
        <button @click="addBc">添加背景色</button>
        <!-- 对象:【实现功能:文本框默认灰色背景,输入字符数小于等于5个背景色为橙色,大于5个背景色为绿色】 -->
        <input type="text" :class="classObj" @input=changeBc($event)>
    </div>
    <script>
       new Vue({
            el:"#app",
            data:{
                // flag: "", //禁用
                //flag:0, //禁用
                // flag: null, //启用
                flag: undefined, //启用
                classStr:'fc',
                classArr:['fc'],
                classObj:{
                    'sta':true,
                    'success':false,
                    'error':false
                }
            },
            methods:{
                addBc(){
                    // this.classStr += " bc"; //注意:这边bc的前面需要加空格
                    this.classArr.push('bc')
                },
                changeBc(e){
                    console.log(e.target);
                    this.classObj.success =  e.target.value.length <= 5;
                    this.classObj.error =  e.target.value.length > 5;
                }
            }
       }) 
    </script>
</body>
</html>
  •  style属性
    • 语法: v-bind:style = "属性值"  || :style = "属性值"
    • 属性值 
      • 字符串:正常的css样式
      • 对象: 多个css样式
      • 数组:将多个对象合并成一个
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script src="./vue.js"></script>
    <title>Document</title>
</head>
<body>
    <div id="app">
        <!-- 字符串 -->
        <p :style="styleStr">style属性绑定-字符串</p>

        <!-- 对象 -->
        <p :style="styleObj1">style属性绑定-对象</p>

        <!-- 数组 -->
        <p :style="[styleObj1,styleObj2]">style属性绑定-数组</p>
        
    </div>
    <script>
        new Vue({
            el:"#app",
            data:{
                styleStr:'color:red',
                styleObj1:{
                    color:"red",
                    border:"1px solid red"
                },
                styleObj2:{
                    backgroundColor:'#ccc'
                }
                
            }
        }) 
    </script>
</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值