vue——收集表单数据、过滤器

86 篇文章 0 订阅
73 篇文章 0 订阅

收集表单数据

若:,则v-model收集的是value值,用户输入的就是value值

若:,则v-model收集的是value值,且要给标签配置value值

若:

​ 1.没有配置value属性,那么收集的就是checked(勾选true’ or 未勾选false)

​ 2.配置input的value属性:

​ 2.1 v-model的初始值是非数组,那么收集的就是checked

​ 2.2 v-model的初始值是数组,那么收集的就是value值组成的数组

备注:v-model的三个修饰符:

​ lazy:失去焦点再收集数据

​ number:输入字符串转为有效的数字

​ trim:输入首尾空格过滤

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js/vue.js"></script>
</head>

<body>
    <div id="root">
        <!-- 阻止表单的默认提交 -->
        <form @submit.prevent="demo">
            <!-- for和id配合 -->
            <label for="userName">账号:</label>
            <!-- .trim:去掉前后两端的空格 -->
            <input type="text" id="userName" v-model.trim="listData.name"><br><br>
            <label for="userPwd">密码:</label>
            <input type="text" id="userPwd" v-model="listData.pwd"><br><br> 年龄:
            <!-- .number:自动转换,输入的是number类型的不是string类型 -->
            <input type="number" v-model.number="listData.age">
            <br><br> 性别: 男
            <!-- 不是输入框类型的表单元素没有value值,就指定以一个value值 -->
            <input type="radio" name="sex" v-model='listData.sex' value='male'><input type="radio" name="sex" v-model='listData.sex' value="female"><br><br> 爱好:
            <!-- 勾选累的也要加value值 --><input type="checkbox" v-model='listData.hobby' value="eat"><input type="checkbox" v-model='listData.hobby' value="he" checked><input type="checkbox" v-model='listData.hobby' value="play"><input type="checkbox" v-model='listData.hobby' value="enjoy"><br><br> 所在校区:
            <select v-model='listData.area'>
                <option value="">请选择校区</option>
                <option value="xxt" selected>西乡塘区</option>
                <option value="lq">良庆区</option>
                <option value="qx">青秀区</option>
                <option value="xn">兴宁区</option>
            </select>
            <br><br> 其他信息:
            <!-- .lazy:在失去焦点之后才会收集数据 -->
            <textarea v-model.lazy='listData.text'></textarea>
            <br><br>
            <input type="checkbox" v-model='listData.agree'>阅读并接受<a href="javascript:;">《用户协议》</a>
            <button>提交</button>
        </form>
    </div>
    <script>
        new Vue({
            el: '#root',
            data: {
                listData: {
                    name: '',
                    pwd: '',
                    age: '',
                    sex: '',
                    hobby: [],
                    area: '',
                    text: '',
                    agree: ''
                }
            },
            methods: {
                demo() {
                    console.log(this.listData);
                }
            },
        })
    </script>
</body>

</html>

过滤器

定义:对要显示的数据进行特定而是花后再显示(适用于一些简单逻辑的处理)

语法:

​ 1.注册过滤器:Vue.filter(name,callback)或new Vue(filters:{})

​ 2.使用过滤器:{{xxx|过滤器}}或v-bind:属性=“xxx | 过滤器”

备注:

​ 1.过滤器也可以接受额外参数,多个过滤器也可以串联

​ 2.并没有改变原本的数据,是产生新的对应的数据

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js/vue.js"></script>
    <script src="../js/dayjs.min.js"></script>
</head>

<body>
    <div id="root">
        <p>当前时间的时间戳:{{t}}</p>
        <!--计算属性实现 -->
        <p>时间戳格式化之后:{{fmtTime}}</p>
        <!-- methods实现 -->
        <p>methods实现的时间:{{nowT()}}</p>
        <!-- 过滤器实现 -->
        <!-- |:是管道符,前面的值是要过滤(加工处理)的值,后面是过滤器名称 -->
        <!-- 过滤器后面不加小括号,也可以传参数过去 -->
        <p>过滤器格式化的时间:{{t|timeFmt}}</p>
        <!-- 过滤器传参:t是timeFmt()的第一个参数,YYYY/MM/DD是第二个参数 -->
        <p>过滤器改变格式化模板:{{t|timeFmt('YYYY/MM/DD')}}</p>
        <!-- 先将t作为参数传给timeFmt()得到相应的格式化之后的时间,再将得到的时间作为参数传给 mySlice,截取前四个数(年份)-->
        <p>过滤器改变格式化模板:{{t|timeFmt('YYYY-MM-DD')|mySlice}}</p>
    </div>
    <!-- 这个vue实例容器内不能使用root实例里面的局部过滤器 -->
    <div id="app">
        <p>{{msg|mySlice}}</p>
        <!-- 过滤器的另一种用法:v-bind -->
        <p :hi="say|mySlice">打工人</p>
    </div>
    <script>
        // 全局过滤器
        Vue.filter('mySlice', function(value) {
                return value.slice(0, 4)
            })
            // root
        new Vue({
            el: "#root",
            data: {
                t: ''
            },
            mounted() {
                this.newT()
            },
            methods: {
                newT() {
                    // 获取当前的时间戳
                    this.t = Date.now()
                },
                nowT() {
                    return dayjs(this.t).format('YYYY-MM-DD HH:mm:ss')
                }
            },
            computed: {
                fmtTime() {
                    return dayjs(this.t).format('YYYY-MM-DD HH:mm:ss')
                }
            },
            // 局部的过滤器:只在当前的vue实例内有效
            filters: {
                // str='YYYY-MM-DD HH:mm:ss':ES6的做法,参数的默认值,若是没有传第二参数过来,就使用默认的参数
                timeFmt(value, str = 'YYYY-MM-DD HH:mm:ss') {
                    // return dayjs(value).format('YYYY-MM-DD HH:mm:ss')
                    return dayjs(value).format(str)
                },
                /*  mySlice(value) {
                     // 只截取前四个
                     return value.slice(0, 4)
                 } */
            }
        });
        // app
        new Vue({
            el: '#app',
            data: {
                msg: 'hello!world',
                say: '早上好,打工人'
            },
            /* filters: {
                filMsg(value) {
                    return value.slice(0, 6)
                }
            } */
        })
    </script>
</body>

</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue中的过滤器Filter)是用来处理模板中的数据的一种方式。它可以在模板中对数据进行格式化、排序、过滤等操作,使数据在渲染之前经过一定的处理。 在Vue中,你可以通过全局过滤器或局部过滤器来使用过滤器。 全局过滤器可以在整个应用中使用,而局部过滤器只能在特定的组件中使用。 下面是一个使用全局过滤器的示例: ``` // 注册全局过滤器 Vue.filter('capitalize', function(value) { if (!value) return '' value = value.toString() return value.charAt(0).toUpperCase() + value.slice(1) }) // 在模板中使用过滤器 <div> {{ message | capitalize }} </div> ``` 在上面的示例中,我们注册了一个名为"capitalize"的全局过滤器,它会将传入的字符串首字母大写。然后在模板中使用了该过滤器来处理message变量。 除了全局过滤器外,你还可以在组件中定义局部过滤器。下面是一个使用局部过滤器的示例: ``` Vue.component('my-component', { // 定义局部过滤器 filters: { lowercase: function(value) { if (!value) return '' return value.toString().toLowerCase() } }, template: ` <div> {{ message | lowercase }} </div> `, data() { return { message: 'Hello World' } } }) ``` 在上面的示例中,我们在组件的`filters`选项中定义了一个名为"lowercase"的局部过滤器,并在模板中使用了该过滤器来处理message变量。 总结起来,Vue过滤器是一种用于对模板中的数据进行处理和格式化的机制。你可以使用全局过滤器或局部过滤器来定义和使用过滤器

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值