vue2基础语法03——过滤器filter

news2024/12/22 20:00:39

vue2基础语法03——过滤器filter

  • 1. 前言
    • 1.1 需求
    • 1.2 不用过滤器实现
      • 1.2.1 插值语法、计算属性、方法实现
      • 1.2.2 更多关于计算属性 和 方法
  • 2. 使用过滤器实现
    • 2.1 说明
    • 2.2 例子1
    • 2.3 例子2——优化
      • 2.3.1 默认字母不分割
      • 2.3.2 默认字母以@分割
    • 2.4 过滤器使用地方
  • 3. 全局过滤器
  • 4. 过滤器可以串联

1. 前言

1.1 需求

  • 想实现小写字母转大写字母,当然有对应的函数,实现起来很简单,本例只是介绍实现的不同方式,以及如果使用过滤器。

1.2 不用过滤器实现

1.2.1 插值语法、计算属性、方法实现

  • 代码很简单,直接贴,如下:
    在这里插入图片描述
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <script type="text/javascript" src="../js/vue.js"></script>
    
        <div id="root">
            <p>原字母:{{ charStr }}</p>
    
            <p>1. 插值语法里表达式-转大写后的字母:{{ charStr.toUpperCase() }}</p>
    
            <p>2. 计算属性computed-转大写后的字母:{{ upStr }}</p>
            
            <p>3. 方法methods-转大写后的字母:{{ upStr2() }}</p>
        </div>
        
        <script>
            const vm = new Vue({
                el: "#root",
                data: {
                    charStr: 'abcde'
                },
                computed: {
                    upStr(){
                        return this.charStr.toUpperCase();
                    }
                },
                methods: {
                    upStr2(){
                        return this.charStr.toUpperCase();
                    }
                },
            })
        </script>
    </body>
    </html>
    

1.2.2 更多关于计算属性 和 方法

  • 请进下面的文章:

    vue2基础语法02——计算属性、方法、侦听器.

2. 使用过滤器实现

2.1 说明

  • Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化。过滤器可以用在两个地方:双花括号插值v-bind 表达式 (后者从 2.1.0+ 开始支持)。过滤器应该被添加在 JavaScript 表达式的尾部,由“管道”符号指示:

    <p>3. 转大写字母,默认字母以@符分割:{{ charStr | upStrUseFilter2 }}</p>
    
    <input type="text" v-bind:value="charStr | upStrUseFilter2">
    
  • 无论传参数或不传参数,过滤器接收到的第一个参数就是管道符前面的表达式的值

  • 参考官网:
    https://v2.cn.vuejs.org/v2/guide/filters.html.

2.2 例子1

  • 如下:
    在这里插入图片描述
    <body>
        <script type="text/javascript" src="../js/vue.js"></script>
    
        <div id="root">
            <p>原字母:{{ charStr }}</p>
    
            <!-- 1. 如果不传参数,过滤器函数将会收到 charStr 的值作为第一个参数 -->
            <p>1. 过滤器-不传参数-转大写后的字母:{{ charStr | upStrUseFilter}}</p>
    
            <!-- 如果传一个或多个参数,其中 charStr 的值作为第一个参数,
                普通字符串 '-' 作为第二个参数,后面如果还有参数依次类推 -->
            <p>2. 过滤器-传参数-转大写后的字母:{{ charStr | upStrUseFilter2("-")}}</p>
    
        </div>
        
        <script>
            const vm = new Vue({
                el: "#root",
                data: {
                    charStr: 'abcde'
                },
                filters: {
                    upStrUseFilter(value){
                        // 过滤器函数将会收到 charStr 的值作为第一个参数
                        return value.toUpperCase();
                    },
                    upStrUseFilter2(value,separator){
                        // 过滤器函数将会收到 charStr 的值作为第一个参数
                        var str = value.toUpperCase();
                        var strArr = str.split('');
                        var result = strArr.join(separator);
                        return result;
                    }
                }
            })
        </script>
    </body>
    

2.3 例子2——优化

2.3.1 默认字母不分割

  • 如下:
    在这里插入图片描述
    <body>
        <script type="text/javascript" src="../js/vue.js"></script>
    
        <div id="root">
            <p>原字母:{{ charStr }}</p>
    
            <!-- 如果传一个或多个参数,其中 charStr 的值作为第一个参数,
                普通字符串 '-' 作为第二个参数,后面如果还有参数依次类推 -->
            <p>1. 转大写字母,且以‘-’分割:{{ charStr | upStrUseFilter2("-") }}</p>
    
            <p>2. 转大写字母,且以‘*’分割:{{ charStr | upStrUseFilter2("*") }}</p>
    
            <p>3. 转大写字母,默认字母不需要分割:{{ charStr | upStrUseFilter2 }}</p>
    
        </div>
        
        <script>
            const vm = new Vue({
                el: "#root",
                data: {
                    charStr: 'abcde'
                },
                filters: {
                    upStrUseFilter2(value,separator){
                        var str = value.toUpperCase();
                        if(!separator){
                            // 如果separator没有值(包括空字符串 和 undefined)
                            return str;
                        }else{
                            var strArr = str.split('');
                            var result = strArr.join(separator);
                            return result;
                        }
                    }
                }
            })
        </script>
    </body>
    

2.3.2 默认字母以@分割

  • 如下:
    在这里插入图片描述

    <body>
        <script type="text/javascript" src="../js/vue.js"></script>
    
        <div id="root">
            <p>原字母:{{ charStr }}</p>
    
            <!-- 如果传一个或多个参数,其中 charStr 的值作为第一个参数,
                普通字符串 '-' 作为第二个参数,后面如果还有参数依次类推 -->
            <p>1. 转大写字母,且以‘-’分割:{{ charStr | upStrUseFilter2("-") }}</p>
    
            <p>2. 转大写字母,且以‘*’分割:{{ charStr | upStrUseFilter2("*") }}</p>
    
            <p>3. 转大写字母,默认字母以@符分割:{{ charStr | upStrUseFilter2 }}</p>
    
        </div>
        
        <script>
            const vm = new Vue({
                el: "#root",
                data: {
                    charStr: 'abcde'
                },
                filters: {
                    upStrUseFilter2(value,separator="@"){
                        var str = value.toUpperCase();
                        var strArr = str.split('');
                        var result = strArr.join(separator);
                        return result;
                    }
                }
            })
        </script>
    </body>
    

2.4 过滤器使用地方

  • 过滤器可以用在两个地方:双花括号插值v-bind 表达式 (后者从 2.1.0+ 开始支持)。过滤器应该被添加在 JavaScript 表达式的尾部,由“管道”符号指示,上面例子都是插值语法里,写在v-bind 表达式 里,如下:
    <input type="text" v-bind:value="charStr | upStrUseFilter2">
    
    在这里插入图片描述

3. 全局过滤器

  • 全局过滤器:在创建 Vue 实例之前全局定义过滤器。
    当全局过滤器和局部过滤器重名时,会采用局部过滤器。
  • 全局过滤器例子如下:
    <body>
        <script type="text/javascript" src="../js/vue.js"></script>
    
        <div id="root">
            <p>原字母:{{ charStr }}</p>
    
            <!-- 如果传一个或多个参数,其中 charStr 的值作为第一个参数,
                普通字符串 '-' 作为第二个参数,后面如果还有参数依次类推 -->
            <p>1. 转大写字母,且以‘-’分割:{{ charStr | upStrUseFilter2("-") }}</p>
    
            <p>2. 转大写字母,且以‘*’分割:{{ charStr | upStrUseFilter2("*") }}</p>
    
            <p>3. 转大写字母,默认字母以@符分割:{{ charStr | upStrUseFilter2 }}</p>
    
            <input type="text" v-bind:value="charStr | upStrUseFilter2">
    
        </div>
        
        <script>
    
            // 在创建 Vue 实例之前定义全局过滤器
            Vue.filter('upStrUseFilter2',function(value,separator="@"){
                var str = value.toUpperCase();
                var strArr = str.split('');
                var result = strArr.join(separator);
                return result;
            })
    
            const vm = new Vue({
                el: "#root",
                data: {
                    charStr: 'abcde'
                }
            })
        </script>
    </body>
    

4. 过滤器可以串联

  • 语法如下:
    • 语法:
      {{ charStr | filterA | filterB }}
      
    • 解释:
      filterA 被定义为接收单个参数的过滤器函数,表达式 charStr 的值将作为参数传入到filterA函数中。然后继续调用同样被定义为接收单个参数的过滤器函数 filterB,将 filterA 的结果传递到 filterB 中
      当然 filterA 和 filterB 也都可以接收多个参数。
  • 下面举个例子,第一个过滤器是转大小写的过滤器,第二个过滤器是将字符串以指定的分隔符分割的过滤器(就是将我们上面例子中的一个过滤器拆成2个)。如下:
    在这里插入图片描述
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <script type="text/javascript" src="../js/vue.js"></script>
    
        <div id="root">
            <p>原字母:{{ charStr }}</p>
    
            <!-- 将过滤器 upStrUseFilterA 的结果传递到 过滤器separatorStrUseFilterB 中 -->
            <p>1. 转大写字母,且以‘-’分割:{{ charStr | upStrUseFilterA | separatorStrUseFilterB("-") }}</p>
    
            <p>2. 转大写字母,且以‘*’分割:{{ charStr | upStrUseFilterA | separatorStrUseFilterB("*") }}</p>
    
            <p>3. 转大写字母,默认字母以@符分割:{{ charStr | upStrUseFilterA | separatorStrUseFilterB }}</p>
    
        </div>
        
        <script>
    
            // 1. 将字母转大写的过滤器
            Vue.filter('upStrUseFilterA',function(value){
                var upStr = value.toUpperCase();
                return upStr;
            });
    
            //2. 将字符串分割的过滤器
            Vue.filter('separatorStrUseFilterB',function(value,separator="@"){
                var strArr = value.split('');
                var result = strArr.join(separator);
                return result;
            });
    
    
            const vm = new Vue({
                el: "#root",
                data: {
                    charStr: 'abcde'
                }
            })
        </script>
    </body>
    </html>
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1680604.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实验室无法培养的菌,原来可以这么研究!

厌氧氨氧化&#xff08;anammox&#xff09;细菌在全球氮循环和废水氮去除中发挥着至关重要的作用&#xff0c;由于anammox细菌生长缓慢、难以培养等特点&#xff0c;对其生态学和生物学特性知之甚少。近日&#xff0c;凌恩生物合作客户重庆大学陈猷鹏教授团队在《Science of t…

Gemini 5.14日更新 - 推出Gemini Advance服务

收到Gemini Advance试用邀请 今天和往常一样&#xff0c;打开Gemini&#xff0c;惊喜的发现右小角一行小字&#xff1a;试用Gemini Advance。好家伙&#xff0c;OpenAI 刚推出ChatGPT 4o&#xff0c;Google立马推出Gemini Advance&#xff0c;说明国外高科技企业也是很拼的。 …

哈夫曼编码的应用

数据结构与算法课的一个简单实验&#xff0c;记录一下&#xff0c;以供参考。 文章目录 要求测试样例统计字母出现次数建立哈夫曼树对字符编码对原文进行编码译码 要求 输入一段100—200字的英文短文&#xff0c;存入一文件a中。统计短文出现的字母个数n及每个字母的出现次数…

公域流量如何引流到私域流量?

公域流量和私域流量是数字营销中常用的两种流量类型。公域流量指的是通过搜索引擎、社交媒体等公共平台获取的流量&#xff0c;而私域流量则是指企业自身拥有的用户群体和数据。那么&#xff0c;如何将公域流量引流到私域流量呢&#xff1f;下面我将为您详细解答。 1、提供有价…

开源社区社群兴趣搭子圈子,系统开发新论坛交流兴趣爱好圈子论坛可搭建本地同城社群圈子社区圈子同城找搭子圈子,包含小程序+公众号H5+安卓苹果app,源码交付!

优势 1、长时间的陪玩APP源码开发经验&#xff0c;始终坚持从客户的实际需求出发 2、提供安全的陪玩系统源码开发解决方案 3、需求定制不走弯路&#xff0c;源码交付&#xff0c;可二开 4、追求精细化服务&#xff0c;力求做好每一个陪玩系统源码开发环节搭建流程支持 PC 端…

多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合

● 环境框架&#xff1a;python 3.9 pytorch 1.8 及其以上版本均可运行 ● 使用对象&#xff1a;论文需求、毕业设计需求者 ● 代码保证&#xff1a;代码注释详细、即拿即可跑通。 往期精彩内容&#xff1a; 时序预测&#xff1a;LSTM、ARIMA、Holt-Winters、SARIMA模型的分…

MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】

前言 做数仓开发离不开 SQL &#xff0c;写了很多 HQL 回头再看 MySQL 才发现&#xff0c;很多东西并不是 HQL 所独创的&#xff0c;而是几乎都来自于关系型数据库通用的 SQL&#xff1b;想到以后需要每天和数仓打交道&#xff0c;那么不管是 MySQL 还是 Oracle &#xff0c;都…

部署YUM仓库及 NFS共享服务

YUM仓库服务 部署YUM软件仓库 使用YUM工具管理软件包 一、YUM概述 1.YUM (Yellow dog Updater Modified) 基于RPM包构建的软件更新机制可以自动解决依赖关系所有软件包由集中的YUM软件仓库提供 2. 准备安装源3-1 2.1 软件仓库的提供方式 FTP服务:ftp://..HTTP服务:htt…

线性回归学习笔记

学习了王天一博士的机器学习40讲&#xff0c;做个小总结&#xff1a; 1、机器学习中&#xff0c;回归问题隐含了输入变量和输出变量均可连续取值的前提。 2、单变量线性回归&#xff0c;所有样本到直线的欧氏距离之和最小&#xff0c;即均方误差最小化。 3、最小二乘法的几何意…

OceanBase集群如何进行OCP的替换

有OceanBase社区版的用户提出替换 OCP 管控平台的需求。举例来说&#xff0c;之前的OCP平台采用单节点&#xff0c;然而随着OceanBase集群的陆续上线和数量的不断增多&#xff0c;担心单节点的OCP可能面临故障风险&#xff0c;而丧失对OceanBase集群的管控能力。另此外&#xf…

Leetcode - 周赛397

目录 一&#xff0c;3146. 两个字符串的排列差 二&#xff0c;3147. 从魔法师身上吸取的最大能量 三&#xff0c;3148. 矩阵中的最大得分 四&#xff0c;3149. 找出分数最低的排列 一&#xff0c;3146. 两个字符串的排列差 本题就是求同一个字符在两个字符串中的下标之差的…

网页版Figma汉化

最近学习Figma&#xff0c;简单介绍一下网页版Figma的汉化方法 1.打开网址&#xff1a;Figma软件汉化-Figma中文版下载-Figma中文社区 2.下载汉化插件离线包 解压汉化包 3.点开谷歌的管理扩展程序 4.点击加载已解压的扩展程序&#xff0c;选择刚刚解压的包 这样就安装好了汉化…

stm32ADC注入通道使用笔记(以STM32F407 为例)

ADC_JDR1 存放的是第一次转换的数据 ADC_JDR2 存放的是第二次转换的数据 ADC_JDR3 存放的是第三次转换的数据 ADC_JDR4 存放的是第四次转换的数据 1.当 JL 0&#xff08;定序器中有 1 次注入转换&#xff09;时&#xff0c;ADC 将仅转换 JSQ4[4:0] 通道。值存入ADC_JDR1中…

dfs记忆化搜索,动态规划

动态规划概念&#xff1a; 给定一个问题&#xff0c;将其拆成一个个子问题&#xff0c;直到子问题可以直接解决。然后把子问题的答案保存起来&#xff0c;以减少重复计算。再根据子问题的答案反推&#xff0c;得出原问题解。 821 运行时间长的原因&#xff1a; 重复大量计算…

IT革新狂潮:引领未来的技术趋势

方向一&#xff1a;技术革新与行业应用 当前现状&#xff1a; 量子计算&#xff1a;量子计算的研究正在加速&#xff0c;尽管目前仍处于初级阶段&#xff0c;但其在药物研发、加密技术和材料科学等领域的应用潜力已被广泛认可。 虚拟现实&#xff08;VR&#xff09;与增强现实…

算法学习笔记(5.0)-基于比较的高效排序算法-归并排序

##时间复杂度O(nlogn) 目录 ##时间复杂度O(nlogn) ##递归实现归并排序 ##原理 ##图例 ##代码实现 ##非递归实现归并排序 ##释 #代码实现 ##递归实现归并排序 ##原理 是一种基于分治策略的基础排序算法。 1.划分阶段&#xff1a;通过不断递归地将数组从中点处分开&…

python之pyQt5实例:树莓派+MPU6050采集数据

1、安装必要的软件包&#xff1a; sudo apt-get update sudo apt-get install python3-smbus python3-dev i2c-tools sudo apt-get install python3-smbus 2、确认I2C接口已经启用&#xff1a; 运行 sudo raspi-config 命令打开Raspberry Pi配置工具。 在菜单中选择 "…

ThreadLocal,一次到位

一、定义 ThreadLocal是线程私有变量&#xff0c;用于保存每个线程的私有数据。 那么什么情况下需要进行线程隔离 二、源码分析 public class ThreadLocalTest01 {ThreadLocal<Integer> t new ThreadLocal<>();public void test() {t.set(1);Integer integer…

如果你还不了解双亲委派模型,来看看这篇吧

文章首发于【Java天堂】&#xff0c;跟随我探索Java进阶之路&#xff01; 类与类加载器 类是由它的类加载器加载进虚拟机中的&#xff0c;在同一个Java虚拟机中&#xff0c;对于同一个Class文件&#xff0c;如果采用不同的类加载器&#xff0c;得到的是不相等的类&#xff0c;…

k8s二进制部署--多master、负载均衡、高可用

目录 1、环境准备 1.1 服务器配置 1.2 master02 节点部署 2、负载均衡部署 2.1 下载nginx 2.2 修改nginx配置文件 2.3 启动nginx 2.3.1 检查配置文件语法 2.3.2 启动nginx服务&#xff0c;查看已监听6443端口 3. 部署keepalived服务(nginx主机&#xff0c;以nginx01为…