首页 > 其他分享 >Vue(九):计算属性

Vue(九):计算属性

时间:2023-06-26 20:45:26浏览次数:29  
标签:Vue firstName 插值 lastName 计算 fullName 属性

现在有一个需求,输入姓和名将其拼接为全名,全名要求根据姓名实时变化。

下面是三种实现:

1.插值语法实现

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>姓名案例-插值语法实现</title>
    <script type="text/javascript" src="../js/vue.js"></script>
</head>

<body>


    <div id="root">
        姓:<input type="text" v-model="firstName"><br>
        名:<input type="text" v-model="lastName"><br>
        全名:<span>{{firstName}}-{{lastName}}</span>
    </div>

    <script type="text/javascript">

        const vm = new Vue({
            el: "#root",
            data: {
                firstName: "",
                lastName: ""
            }
        })
    </script>
</body>

</html>

插值语法可以实现所需要的功能,但是当需要更加复杂时,插值语法中的表达式就会变得十分冗余。

2.methods实现

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>姓名案例-methods实现</title>
    <script type="text/javascript" src="../js/vue.js"></script>
</head>

<body>


    <div id="root">
        姓:<input type="text" v-model="firstName"><br>
        名:<input type="text" v-model="lastName"><br>
        全名:<span>{{fullName()}}</span>
    </div>

    <script type="text/javascript">

        const vm = new Vue({
            el: "#root",
            data: {
                firstName: "",
                lastName: ""
            },
            methods: {
                fullName() {
                    return this.firstName + "-" + this.lastName
                }
            }
        })
    </script>
</body>

</html>

使用methods实现,将插值语法的表达式转化为一个方法,模板中直接对方法进行调用,但是其他地方的数据变化,Vue模板刷新,会重复调用函数,进行计算。

3.计算属性

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>姓名案例-计算属性实现</title>
        <script type="text/javascript" src="../js/vue.js"></script>
    </head>
    <!--
    计算属性
        1.什么是计算属性?
        计算属性就是将Vue中的属性经过计算后得到的新的属性,计算属性会直接出现在vm上
        2.计算属性的原理
        底层借助了Object.defineProperty中的getter和setter
        3.get函数什么时候执行?
            a.计算属性被初次调用时
            b.计算属性所依赖的属性发生改动时
        4.计算属性对比methods的优势
        计算属性内部有缓存机制,能够实现复用,效率更高
    -->
    <body>
        <div id="root">
            姓:<input type="text" v-model="firstName"><br>
            名:<input type="text" v-model="lastName"><br>
            全名:<span>{{fullName}}</span>
        </div>
    </body>

    <script>
        const vm = new Vue({
            el: "#root",
            data: {
                firstName: "",
                lastName: ""
            },
            // //完整写法,setter非必要,如果没有修改的需求,setter可以省略
            // computed: {
            //     fullName: {
            //         get() {
            //             return this.firstName + "-" + this.lastName
            //         },
            //         set(value) {
            //             const arr = value.split("-")
            //             this.firstName = arr[0]
            //             this.lastName = arr[1]
            //         }
            //     }
            // }

            //省略写法,省略写法地前提是不需要setter
            computed: {
                fullName() {
                    return this.firstName + "-" + this.lastName
                }
            }
        })
    </script>
</html>

计算属性的缓存机制解决了模板刷新时重复计算的问题,只有当计算属性所依赖的属性发生变化时,才会进行重新的计算。

标签:Vue,firstName,插值,lastName,计算,fullName,属性
From: https://www.cnblogs.com/jmsstudy/p/17506651.html

相关文章

  • JQ 事件对象的属性
    demo.html<html><head><title>event.type</title><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><scriptsrc="js/jquery-1.10.1.min.js"type="text/javascript">......
  • 织梦 channelartlist 支持 limit 属性使用
    查找字段:$attlist='typeid|0,row|20,cacheid|';替换为:$attlist='typeid|0,row|20,cacheid|'; 效果图: 在“$dsql->SetQuery”前面添加$limit=trim(preg_replace('#limit#is','',$limit));if($limit!='')$limitsql="L......
  • vue3.0之axios使用
    //导入包importaxiosfrom"axios";//使用示例axios.post('发送请求地址',{携带变量key1:变量value1,携带变量key2:变量value2,}).then(response=>{//后端返回给前端的数据都在response.data里,可以通过“response.data.键”进行调用if(response.data.cod......
  • vue3.0之emit的使用
    主要用于跨组件传输数据,emit可以调用父组件中的自定义函数。使用方法letemit=defineEmits(['父组件自定义函数1','父组件自定义函数2','...'])//调用父组件自定义函数的执行emit('父组件自定义函数')主要逻辑在父组件中定义一个自定义函数<template><Loginv-if......
  • vue3.0之cookies的操作
    安装npminstallvue-cookiesimportVueCookiesfrom'vue-cookies'constcookies=VueCookiescookies.set('key值','字符串或变量','7d')//7d代表时间,存放7天cookies.get('key值')//取出key值对应的数据cookies.remove('ke......
  • vue编程-创建首页
    1.将elementUI组件与sass组件依赖加入到对应json中{"name":"default","version":"0.1.0","private":true,"scripts":{"serve":"vue-cli-serviceserve","build":&......
  • 递归,计算器
    递归递归A方法调用B方法,我们很容易理解!递归就是:A方法调用A方法!就是自己调用自己利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次......
  • Hyper-V是微软开发的一种虚拟化技术,它允许在一台物理计算机上创建和管理多个虚拟机。
    Hyper-V是微软开发的一种虚拟化技术,它允许在一台物理计算机上创建和管理多个虚拟机。虚拟机可以运行不同的操作系统,如Windows、Linux等。以下是关于Hyper-V的一些要点:虚拟化技术:Hyper-V是一种类型-1(裸金属)虚拟化技术,它直接运行在硬件上,而不需要一个宿主操作系统。这使得虚拟机能......
  • 可利邦联合浪潮信息:以服务器+存储筑基,加速金融隐私计算发展
    引言:隐私计算(PrivacyComputing),已然成为金融领域的热门话题。从反诈、反洗钱,到客户洞察、精准画像、量化建模,随着市场需求和政策法规的双轮驱动,隐私计算在金融行业的应用正快速铺开。在这背后,金融机构需要构建一站式隐私计算平台,让隐私计算新应用与新基座相得益彰。日前,2023年华南......
  • 含风光发电的电力系统概率潮流计算,考虑负荷波动,风力和光伏出力不确定性
    含风光发电的电力系统概率潮流计算,考虑负荷波动,风力和光伏出力不确定性,算法方面:基于蒙特卡洛法和半不变量法(gram-charlier和corn-fisher级数)。这是一个概率潮流计算的程序,用于考虑分布式电源、发电机和负荷随机波动的情况。它应用在电力系统领域,用于分析电力系统中节点电压和支路......