计算属性computed、过滤器定义Vue.filter()

news2024/11/23 18:33:08
  • 计算属性是为了计算得到一个结果而设计的;
  • 放在Vue中computed里面定义:
  • 如果我们想在页面上打印一个变量,那就直接“{{变量}}”放在大括号里面,然后变量在data里面定义好初始值,就可以在页面上输出了,比如:
<body>
    <div id="box">
        {{mytext}}
    </div>
    <script>
        var vm = new Vue({
            el:"#box",
            data:{
                mytext:"啦啦啦"
            }
        })
    </script>
</body>

结果:

但是如果我们想打印一个值,但是这个值是需要通过逻辑计算的值,虽然“{{}}”大括号里面也能放表达式,但是如果这个表达式很复杂,我们放在里面,就会显得dom部分很复杂,复杂代码应该是放在Vue中的,这样就会显得头重脚轻,所以我们引入了一个“计算属性”的概念;

  • 还是把简单的变量名称放在“{{}}”里,把逻辑代码放在Vue的computed里,computed里面放的就是计算属性;
  • 在computed里面定义的时候,定义成函数,而且一定要有返回值;
  • 这就体现了计算属性的作用是为了计算得到一个结果而设计的,我们只要定义一个想要存储结果的变量放在{{}}里,逻辑代码在computed执行就可以了,结果返回的就是我们想要在页面上打印的一个结果值而已;

代码:

<body>
    <div id="box">
        {{ myComputedName }}
    </div>
    <script>
        new Vue({
            el:"#box",
            data:{
                myname:"yiyi"
            },
            computed:{
                myComputedName(){
                    return this.myname.substring(0,1).toUpperCase()+this.myname.substring(1)
                }
            }
        })
    </script>
</body>

结果:

问题所在: 

那为什么不用函数呢,之前这个{{}}里面放着的是函数的格式:  例如:{{ test() }},然后这个函数在methods里面定义;

不用函数的原因是当我们重复调用函数,比如调用了三次,函数就会老老实实执行三次;

而计算属性会缓存,下次再调用就会复用上一次的结果,只有当代码中的值改变了,它才会重新执行一遍;

图示:

计算属性调用三次:

结果:

  • 按理来讲“myComputedName执行”应该打印三次,但是并没有,这就是计算属性会缓存的表现,缓存上一次的数据,如果下一次跟上一次一样,就复用上一次的结果,而不会重新执行;

但是函数会,看下图函数多次调用

<body>
    <div id="box">
        {{ myMethodsdName() }}
        {{ myMethodsdName() }}
        {{ myMethodsdName() }}
    </div>
    <script>
        new Vue({
            el:"#box",
            data:{
                myname:"yiyi"
            },
            methods:{
                myMethodsdName(){
                    console.log("myMethodsdName执行")
                }
            },
        })
    </script>
</body>

结果:

  • 所以只是想在页面输出一个结果首选计算属性,函数最本质的用法是给事件去用的;

总结:

  • 计算属性(防止模板过重,难以维护),负责逻辑放在计算属性中来写;
  • 计算属性有缓存,基于依赖的缓存;
  • 但是有一个缺点:计算属性里放的是同步代码,需要立即得到结果,像ajax这种异步代码用计算属性,就不行

计算属性的缺点:

  • 但是有一个缺点是,计算属性传不了参,但是函数方法可以传参;
  • 所以有时候如果我们仅仅想得到一个结果,但还要传参,那不还需要用函数方法,这里提供一个替代函数的方法:叫过滤器

过滤器:

  • 管道符“|”:含义是把一个数据通过管道符传到过滤器里去;
  • 过滤器可以认为是一个加工厂,而管道是传输媒介;
  • 写法:
  • 比如加载在页面上的图片需要处理:
  • 参考的代码:(简陋写了下)
<body>
    <div id="box">

        <ul>
            <li v-for="item in datalist" :key="item.id">
                <img :src="item.img | imgFilter1 | imgFilter2"/>
            </li>
        </ul>
    </div>
    <script>
        Vue.filter("imgFilter1",(url)=>{
            return url.replace("w.h/",'')
        })
        Vue.filter("imgFilter2",(url)=>{
            return url+'@1l_1e_1c_128w_180h'
        })
        new Vue({
            el:"#box",
            data:{

            },
        })
    </script>
</body>
  • 过滤器说明:

  • item.img是我们要处理的图片,然后“|”管道,imgFilter1、imgFilter2是过滤器:含义是把item.img通过管道送到过滤器里去处理;
  • 可以只写一个过滤器,也可以写多个过滤器;
  • 多个过滤器含义是:先送到第一个过滤器处理,处理完结果再送到第二个过滤器处理,依次类推;
  • 那在哪里定义这个过滤器呢:
  • Vue中有一个filter方法,是定义过滤器的地方;
  • 格式:

  • filter第一个参数是要定义的过滤器,第二个参数是一个回调函数,回调函数里面写的就是如何加工的具体步骤,回调函数的参数是要加工的对象,也就是我们案例中的图片;
  • 如果需要多个过滤器,那就需要重复定义多次,第二个过滤器的回调函数参数是上一个过滤器加工的结果; 

注意:

这个过滤器只有Vue-2支持,Vue3就不支持过滤器了;

 

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

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

相关文章

策略验证_指标买点分析技法_运用KDJ随机指标选择买点

写在前面&#xff1a; 1. 本文中提到的“股票策略校验工具”的具体使用操作请查看该博文&#xff1b; 2. 文中知识内容来自书籍《同花顺炒股软件从入门到精通》 3. 本系列文章是用来学习技法&#xff0c;文中所得内容都仅仅只是作为演示功能使用 目录 解说 策略代码 结果 解…

tftp服务配置的详细过程,简单快速

主机端编译的Linux内核影像必须有至少一种方式下载到目标板上执行。通常是目标板的引导程序负责把主机端的影像文件下载到内存中。根据不同的连接方式&#xff0c;可以有多种文件传输方式&#xff0c;每一种方式都需要相应的传输软件和协议。 在linux开发中最常用的传输方式为网…

打破汽车零部件企业供应链壁垒,数商云SCM供应链系统实现一体化采购协同

随着疫情反复&#xff0c;包括芯片在内的关键零部件短缺&#xff0c;以及原材料成本和物流费用飙升&#xff0c;使得零部件企业利润大幅压缩甚至亏损。当前&#xff0c;在亚洲、欧洲、北美等地&#xff0c;国际零部件厂商正迎来一波“破产潮”&#xff0c;汽车零部件企业举步维…

数据结构(4)树形结构——二叉树(概述、前序、中序、后序、层序遍历JAVA实现)

目录 4.1.树 4.2.二叉树 4.2.1.概述 4.2.3.存储结构 4.2.3.遍历 1.逻辑简介 2.代码示例 4.1.树 树&#xff0c;由n(n≥0)个有限节点和边组成一个具有层次关系的数据结构。树需要满足以下条件&#xff1a; 任何结点的子节点不相交。任何子结点只有一个父节点。N个结点&am…

carsim 2020 安装说明及多个版本冲突问题解决

在E盘新建一个文件夹&#xff0c;命名为Carsim 2020在Carsim 2020文件夹中&#xff0c;再新建两个文件夹&#xff0c;分别命名为carsim 2020.0_Data和carsim 2020.0_Prog以管理员的身份运行Setup_CarSim_2020.0_r125554.exe&#xff0c;并将安装目录分别选择第2步中的carsim 20…

【LeetCode每日一题:1742. 盒子中小球的最大数量~~~Map+遍历模式+计数】

题目描述 你在一家生产小球的玩具厂工作&#xff0c;有 n 个小球&#xff0c;编号从 lowLimit 开始&#xff0c;到 highLimit 结束&#xff08;包括 lowLimit 和 highLimit &#xff0c;即 n highLimit - lowLimit 1&#xff09;。另有无限数量的盒子&#xff0c;编号从 1 到…

如何设置网络访问 SQL Express?

网络访问 SQL Express 安全和连接SQL Server 配置Windows 防火墙配置连接服务器一旦在本地计算机上设置了 SQL Express,就可以允许网络成员进行远程连接。有不同的方法可以做到这一点,这些步骤可能不适用于现有的网络环境或身份验证方法。下面是在本地计算机上设置的 SQL Ser…

语音前处理技术在会议场景中的应用及挑战

编者按&#xff1a; 随着在线会议的普及&#xff0c;用户已经不再满足于能听到&#xff0c;而是要有更为极致的听感体验&#xff0c;如何能够在复杂多变的应用场景中依旧保证声音清晰流畅是对会议系统的极大挑战。LiveVideoStackCon2022上海站大会邀请到了全时 音视频研发部经理…

网页大作业代码自取【HTML+CSS制作美味糖果网站】

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

【2015】408联考数据结构真题整理

2015 1 题目 答案&#xff1a;A 解析 2 题目 解析 3 题目 解析 4 题目 解析 5 题目 答案&#xff1a;D 解析 6 题目 解析 7 题目 答案&#xff1a;A 解析 8 题目 答案&#xff1a;C 解析 9 题目 解析 10 题目 解析 11 题目 解析 41 题目 答案&#xff1a; 3&a…

Android 深入理解View.post()获取宽高、Window加载View原理

文章目录背景&#xff1a;如何在onCreate()中获取View的宽高&#xff1f;View.post()原理Window加载View流程setContentView()ActivityThread#handleResumeActivity()总结扩展Window、Activity及View三者之间的关系是否可以在子线程中更新UI资料背景&#xff1a;如何在onCreate…

从React源码分析看useEffect

热身准备 这里不再讲useLayoutEffect&#xff0c;它和useEffect的代码是一样的&#xff0c;区别主要是&#xff1a; 执行时机不同&#xff1b;useEffect是异步&#xff0c; useLayoutEffect是同步&#xff0c;会阻塞渲染&#xff1b; 初始化 mount mountEffect 在所有hook…

day34 文件上传黑白盒审计逻辑中间件外部引用

前言 #知识点&#xff1a; 1、白盒审计三要素 2、黑盒审计四要素 3、白黑测试流程思路 #详细点&#xff1a; 1、检测层面&#xff1a;前端&#xff0c;后端等 2、检测内容&#xff1a;文件头&#xff0c;完整性&#xff0c;二次渲染等 3、检测后缀&#xff1a;黑名单&am…

强化学习 马尔科夫决策过程(价值迭代、策略迭代、雅克比迭代、蒙特卡洛)

文章目录一、马尔科夫过程Markov Decision Process&#xff08;MDP&#xff09;1.简介2、Markov 特性3、Markov 奖励过程符号表示MRPs的贝尔曼方程4、Markov决策过程符号表示转化MRPs的贝尔曼方程优化问题贝尔曼最优方程二、价值迭代求解1、回顾2、算法3、案例案例1案例2三、策…

Linux学习笔记13 - 进程间通信(IPC)(四)

消息队列 消息队列(message queue)即消息的列表,亦称报文队列&#xff0c;也叫做信箱。是Linux的一种通信机制&#xff0c;这种通信机制传递的数据具有某种结构&#xff0c;而不是简单的字节流[1]。消息队列的本质其实是一个内核提供的链表&#xff0c;内核基于这个链表&#…

有限元仿真分析误差来源之边界条件设置-动载荷

作者&#xff1a;青梅煮酒 导读&#xff1a;前不久&#xff0c;笔者在仿真秀平台分享一篇关于有限元仿真分析误差来源之边界条件&#xff0c;约束和point mass&#xff0c;引发了工程师朋友们广泛关注和思考。通过与他们交流和讨论&#xff0c;我也有所所获。今天继续开展有限…

【强化学习论文合集】AAAI-2022 | 人工智能CCF-A类会议(附链接)

人工智能促进会(AAAI)成立于1979年&#xff0c;前身为美国人工智能协会(American Association for Artificial Intelligence)&#xff0c;是一个非营利性的科学协会&#xff0c;致力于促进对思想和智能行为及其在机器中的体现的潜在机制的科学理解。AAAI旨在促进人工智能的研究…

利用HbuilderX制作简单网页: HTML5期末大作业——html5漫画风格个人主页

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 ⚽精彩专栏推荐&#x1…

用JAVA详解冒泡排序

1.代码段实现&#xff1a;&#xff08;混的只需要把第一个拿走即可&#xff09; public static void main(String[]args){int []arr new int [] {99,68,97,86,65,94,33,72};System.out.println("排序前的数组为&#xff1a;");for (int i 0;i < arr.length;i){…

Java入门

文章目录数组一维数组多维数组Arrays工具类数组中常见异常String、StringBuilder、StringBufferString类String的特性String对象的创建String常用方法StringBuilder类StringBuffer类StringBuffer对象的创建StringBuffer类的常用方法String、StringBuffer、StringBuilder区别日期…