vue学习—常用指令(二)

本文介绍Vue.js中v-model指令在不同表单元素的应用,包括修饰符使用及v-bind指令在class和style绑定中的高级技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. v-model:-model通常用于表单组件的绑定,例如input,select等。它实现的是表单组件的双向绑定,如果用于表单控件以外标签是没有用的。如代码所示,v-model有三个修饰符:   (1) v-model.lazy在改变这个input输入框里message的值的时候,原始的message值不会发生改变,只有当v-model.lazy这个输入框失去焦点的时候原始的message值才发生相应的改变。在做搜索功能的时候常用到v-model.lazy;   (2) v-model.number,当数据是数字的时候不需要转换就可以直接拿来运算,不需要 onEnter: function () {this.a = this.a + parseInt(this.b); }这种操作;   (3) v-model.trim去掉该条数据前后的空格,也就是说在这个输入框里面的值的前后空格是不生效的。
    <body>
    <h1>v-model </h1>
    <div id="app">
    <p>原始文本:{{message}}</p>
    <h3>文本框{{a}}</h3>
    <p>v-model:
    <input type="text" v-model="message">
    </p>
    <p>v-model.lazy:
    <input type="text" v-model.lazy="message">
    </p>
    <p>v-model.number
    <input type="text" @keyup.enter="onEnter" v-model.number="b">
    </p>
    <p>v-model.trim
    <input type="text" v-model.trim="message">
    </p>
    <hr>
    <h3>文本域</h3>
    <textarea v-model="message" cols="30" rows="10"></textarea>
    <hr>
    <h3>单选框</h3>
    <p>{{xz}}
    <input type="checkbox" v-model="xz">
    </p>
    <hr>
    <h3>多个单选框绑定一个数组</h3>
    <p>
    <input type="checkbox" id="xz1" value="xz1" v-model="xzArray">
    <label for="xz1">xz1</label>
    <br>
    <input type="checkbox" id="xz2" value="xz2" v-model="xzArray">
    <label for="xz2">xz2</label>
    <br>
    <input type="checkbox" id="xz3" value="xz3" v-model="xzArray">
    <label for="xz3">xz3</label>
    <p>{{xzArray}}</p>
    </p>
    <hr>
    <h3>单选按钮</h3>
    <input type="radio" id="one" value="true" v-model="danxuan">
    <label for="one">true</label>
    <br>
    <input type="radio" id="two" value="false" v-model="danxuan">
    <label for="two">false</label>
    <p>{{danxuan}}</p>
    <hr>
    <h3>选择列表</h3>
    <p>
    <select v-model="set">
    <option>A</option>
    <option>B</option>
    <option>C</option>
    </select>
    <p>{{set}}</p>
    <select v-model="rerge" multiple>
    <option>A</option>
    <option>B</option>
    <option>C</option>
    </select>
    <p>{{rerge}}</p>
    </p>
    </div>
    <script>
    var app = new Vue({
    el: "#app",
    data: {
    a: 10,
    b: 0,
    message: "Hello Vue!",
    xz: true,
    xzArray: [],
    danxuan: "",
    set: "",
    rerge: []
    },
    methods: {
    onEnter: function () {
    this.a = this.a + this.b;
    }
    }
    })

    function sortByKey(array, key) {
    return array.sort(function (a, b) {
    var x = a[key];
    var y = b[key];
    return ((x < y) ? -1 : ((x > y) ? 1 : 0));
    });
    }
    </script>
    </body>
  2. v-bind:(1) 绑定class: v-bind:class="{classA:false}"中classA是style里面的class类名,true/false控制那个类名是否起作用;在绑定class时使用数组的话,在使用v-bind:class="[classA,classB]"的同时,data里面要设置classA,classB的值:classA: "classA",classB: "classB"; 绑定class时使用数组的话,在使用v-bind:class="[classA,classB]"的同时,data里面要设置classA,classB的值:classA: "classA",classB: "classB";  (2) 绑定style时,style对象里面键的键值对中,键名是css的属性名,遇到横线链接的如font-size要去掉横线用小驼峰命名,键的值必须是data里面设置的值;style绑定json语句的时候,所用的这个json对象必须是data里面的一个设置css样式的json对象,这个对象里面遇到有横线链接的属性名也要用小驼峰命名;  (3) v-bind:可以缩写为一个冒号;
    <body>
    <h1>v-bind </h1>
    <div id="app">
    <img v-bind:src="imgSrc" width="200" height="200">
    <hr>
    <h3>一.绑定class</h3>
    <div v-bind:class="{classA:true}">1.绑定class中的判断</div>
    <div v-bind:class="[classA,classB]">2.绑定class中使用数组</div>
    <div v-bind:class="[color?classA:classB]">3.绑定class中使用三元表达式判断</div>
    <div v-bind:class="[{classA:color},classB]">4.绑定class中使用判断组合</div>
    <hr>
    <h3>二.绑定style</h3>
    <div v-bind:style="{color:blue,fontSize:font}">style绑定</div>
    <div v-bind:style="fontArry">style绑定json语句</div>
    </div>
    <style>
    .classA {
    color: red;
    }

    .classB {
    font-size: 58px;
    }
    </style>
    <script>
    var app = new Vue({
    el: "#app",
    data: {
    message: "Hello Vue!",
    imgSrc: "../images/01.jpg",
    classA: "classA",
    classB: "classB",
    blue: "blue",
    font: "18px",
    color: true,
    fontArry: {
    color: "green",
    fontSize: "26px",
    fontWeight: "550"
    }
    },
    computed: {

    }
    })
    </script>
    </body>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值