首页 > 其他分享 >2.12、收集表单数据 2.13、过滤器

2.12、收集表单数据 2.13、过滤器

时间:2024-12-14 09:02:22浏览次数:10  
标签:Vue return val price 表单 过滤器 filterA 2.13 2.12

需求:收集以下表单的数据

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>表单数据的收集</title>
    <script src="../js/vue.js"></script>
  </head>
  <body>
    <div id="app">
      <h1>{{msg}}</h1>
      <!-- submit事件,prevent阻止默认行为 -->
      <form @submit.prevent="send">
        <!-- trim修饰符可以去除前后空白 -->
        用户名:<input type="text" v-model.trim="user.username" /><br /><br />
        密码:<input type="password" v-model="user.password" /><br /><br />
        <!-- number来将字符串转为数字 -->
        年龄:<input type="number" v-model.number="user.age" /><br /><br />
        <!-- v-model 主要收集的是value值,否则手机不到信息 -->
        性别: 男<input type="radio" name="gender" value="1" v-model="user.gender" />
           女<input type="radio" name="gender" value="0" v-model="user.gender" /><br /><br />
        爱好:
        <!-- 注意:对于checkbox来说,如果没有手动指定value,
            那么会拿这个标签的checked属性的值作为value -->
        旅游<input type="checkbox" v-model="user.interest" value="travel" /> 
        运动<input type="checkbox" v-model="user.interest" value="sport" /> 
        唱歌<input  type="checkbox" v-model="user.interest" value="sing"/><br /><br />
        学历:
        <select v-model="user.grade">
          <option value="">请选择学历</option>
          <option value="zk">专科</option>
          <option value="bk">本科</option>
          <option value="ss">硕士</option>
        </select><br /><br />
        简介:
        <!-- lazy修饰符,失去焦点时再收集信息 -->
        <textarea cols="50" rows="15" v-model.lazy="user.introduce"></textarea>
        <br /><br />

        <input type="checkbox" v-model="user.accept" />阅读并接受协议<br /><br />
        <!-- <button @click.prevent="send">注册</button> -->
        <button>注册</button>
      </form>
    </div>
    <script>
      const vm = new Vue({
        el: "#app",
        data: {
          // 将数据单独收集到一个对象中
          user: {
            username: "",
            password: "",
            age: "",
            gender: "1", //默认选中,让数据有默认值
            interest: ["travel"],
            grade: "ss",
            introduce: "",
            accept: "",
          },
          msg: "表单数据的收集",
        },
        methods: {
          send() {
            // alert("ajax...!!!!");
            // 将数据收集好,发送给服务器。
            //JSON.parse()将字符串转为对象
            console.log(JSON.stringify(this.user));
          },
        },
      });
    </script>
  </body>
</html>

 

过滤器filters适用于简单的逻辑处理,例如:对一些数据进行格式化显示。他的功能完全可以使用methods,computed来实现。过滤器可以进行全局配置,也可以进行局部配置:

① 全局配置:在构建任何Vue实例之前使用Vue.filter(‘过滤器名称’, callback)进行配置。

② 局部配置:在构建Vue实例的配置项中使用filters进行局部配置。过滤器可以用在两个地方:插值语法和v-bind指令中。

多个过滤器可以串联:{{msg | filterA | filterB | filterC}}

过滤器也可以接收额外的参数,但过滤器的第一个参数永远接收的都是前一个过滤器的返回值

需求:

从服务器端返回了一个商品的价格price,这个price的值可能是这几种情况:''、null、undefined、60.5

要求:

如果是'' 、null、undefined ,页面上统一显示为 -

如果不是,则页面上显示真实的数字即可。

在Vue3当中,已经将过滤器语法废弃了。

  <body>
    <div id="app">
      <h1>{{msg}}</h1>
      <!-- 计算属性实现  formatPrice -->
      <h2>商品价格:{{formatPrice}}</h2>
      <!-- 方法实现  formatPrice2() -->
      <h2>商品价格:{{formatPrice2()}}</h2>
      <!-- 过滤器实现  放在插值语法中  -->
      <h2>商品价格:{{price | filterA | filterB(3)}}</h2>
      <!-- 过滤器放入到v-bind中 ,不能放到v-model中-->
      <input type="text" :value="price | filterA | filterB(3)" />
    </div>

    <hr />
    <!-- 全局过滤器 -->
    <div id="app2">
      <h2>商品价格:{{price | filterA | filterB(3)}}</h2>
    </div>

    <script>
      // 4、 配置全局的过滤器。
      Vue.filter("filterA", function (val) {
        if (val === null || val === undefined || val === "") {
          return "-";
        }
        return val;
      });

      Vue.filter("filterB", function (val, number) {
        return val.toFixed(number);
      });

      const vm2 = new Vue({
        el: "#app2",
        data: {
          price: 20.3,
        },
      });

      const vm = new Vue({
        el: "#app",
        data: {
          msg: "过滤器",
          price: 50.6,
        },
        //1、方法实现需求
        methods: {
          formatPrice2() {
            if (this.price === "" || this.price === undefined || this.price === null) {
              return "-";
            }
            return this.price;
          },
        },
        // 2、计算属性实现
        computed: {
          formatPrice() {
            if (this.price === "" || this.price === undefined || this.price === null) {
              return "-";
            }
            return this.price;
          },
        },
        // 3、局部过滤器

        /* filters: {
          filterA(val) {
            if (val === null || val === undefined || val === "") {
              return "-";
            }
            return val;
          },
          //需求: 确保传递过来的数据val,保留两位小数。
          filterB(val, number) {
            console.log(val); //此时的值时filterA的返回值
            return val.toFixed(number);
          },
        }, */
      });
    </script>
  </body>

 

标签:Vue,return,val,price,表单,过滤器,filterA,2.13,2.12
From: https://blog.csdn.net/qq_60060362/article/details/144464075

相关文章

  • 2024.12.12 周四
    2024.12.12周四Q1.1000Youhaveanarray$a$of$n$integers.Youcannomorethanonceapplythefollowingoperation:selectthreeintegers$i$,$j$,$x$($1\lei\lej\len$)andassignallelementsofthearraywithindexesfrom$i$to$j$theva......
  • 12.12日报
    今天完成机器学习B实验,并且进行软件需求分析大作业验收,以下为今日实验部分内容实验五:BP神经网络算法实现与测试一、实验目的深入理解支持向量机(SVM)的算法原理,能够使用Python语言实现支持向量机的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。  二、实验内......
  • 12.12实验八:随机森林算法实现与测试
    实验八:随机森林算法实现与测试一、实验目的深入理解随机森林的算法原理,进而理解集成学习的意义,能够使用Python语言实现随机森林算法的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。 二、实验内容(1)从scikit-learn库中加载iris数据集,使用留出法留出1/3的样......
  • 12.12随笔
    这里是12.12随笔。题目留档:7-1整型关键字的散列映射分数30作者DS课程组单位浙江大学给定一系列整型关键字和素数p,用除留余数法定义的散列函数H(key)=key%p将关键字映射到长度为p的散列表中。用线性探测法解决冲突。输入格式:输入第一行首先给出两个正整数n(≤1000......
  • 每日一刷——二叉树的构建——12.12
    第一题:最大二叉树题目描述:654.最大二叉树-力扣(LeetCode)我的想法:我感觉这个题目最开始大家都能想到的暴力做法就是遍历找到数组中的最大值,然后再遍历一遍,把在它左边的依次找到最大值,但是emmm,感觉效率很低,时间上肯定过不了然后其实我会觉得这个题目跟大根堆和小根堆有......
  • 12.12 数据结构,创建顺序表
    1.思维导图2.创建顺序表程序代码:1>头文件seqList.h:#ifndef__SEQLIST_H__#define__SEQLIST_H__#include<stdio.h>#include<stdlib.h>#include<string.h>//数据类型重命名typedefintDataType;//宏定义线性表的最大容量#defineMAX30//定义顺序表的结构体......
  • 12.12 CW 模拟赛 T3. 消除贫困
    思路朴素容易发现一个人资金变化是这样的:对于\(op=1\)的情况,会将其直接变成\(x\)对于\(op=2\)的情况,将其变成\(\max(x,当前值)\)直接用线段树暴力的维护即可巧妙容易发现\(op=2\)相当于一个大保底,我们先倒着处理出每个人到\(i\)位置至少有多少......
  • 12.12 CW 模拟赛 T1. 理想路径
    前言作为一个别的不行抗伤无敌的\(\rm{man}\),区区反向\(\rm{rk\1}\)不足为惧\(\rm{HD0X}\)巨佬场切\(2700\),\(\%\%\%\)思路朴素先把考场上一些基础的想法搬过来考虑一个环什么时候会导致产生字典序负环,这个好像还比较显然,就是如果出去的那个点的字典序小......
  • 《赛博朋克2077》:官方中文版,V2.13版本+‘往日之影’DLC,全DLC内容,新版修改器
    《赛博朋克2077》:官方中文版,V2.13版本+‘往日之影’DLC,全DLC内容,新版修改器《赛博朋克2077》是一款深受玩家喜爱的开放世界动作冒险角色扮演游戏,现在官方中文版已更新至V2.13版本,并包含备受期待的‘往日之影’DLC以及全部DLC内容。玩家可以体验到更加丰富的游戏世界和剧情。版......
  • 封装编辑表单的数据回掉
    在前端项目中,编辑某个表单项的时候,我们需要对表单项进行数据回调方便操作但是如果直接把页面表单数据直接给编辑表单数据,这种时候回出现一种bug,假如,我编辑完之后,没有进行提交,而且不刷新页面的话,这个表单项仍然是编辑后的样子为什么会出现这种情况?我们赋值的是地址,而......