Vue 计算属性-姓名案例

news/2024/7/10 2:06:02 标签: vue

文章目录

  • 姓名案例-插值语法实现
  • 姓名案例-methods实现
  • 姓名案例-计算属性实现
  • 计算属性简写

在这里插入图片描述

姓名案例-插值语法实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue初识</title>
    <script type="text/javascript" src="./js/vue.js"></script>
    <style>

    </style>
</head>
<body>
<div id="root">
    姓:<input type="text" v-model="firstName"><br/><br/>
    名:<input type="text" v-model="lastName"><br/><br/>
    全名:<span>{{firstName}}-{{lastName}}</span>
</div>
<script type="text/javascript">
    Vue.config.productionTip = false

    new Vue({
        el:'#root',
        data:{
            firstName:'张',
            lastName:'三'
        }
    })
</script>
</body>
</html>

姓名案例-methods实现

数据一发生变化,模板需要重新解析


<div id="root">
    姓:<input type="text" v-model="firstName"><br/><br/>
    名:<input type="text" v-model="lastName"><br/><br/>
    全名:<span>{{fullName()}}</span>
</div>
<script type="text/javascript">
    Vue.config.productionTip = false

    new Vue({
        el: '#root',
        data: {
            firstName: '张',
            lastName: '三'
        },
        methods: {
            fullName() {
                //每次姓或名发生改变,方法都会被调用
                return this.firstName + "-" + this.lastName
            }
        }
    })
</script>

姓名案例-计算属性实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue初识</title>
    <script type="text/javascript" src="./js/vue.js"></script>
    <style>

    </style>
</head>
<body>
<div id="root">
    姓:<input type="text" v-model="firstName"><br/><br/>
    名:<input type="text" v-model="lastName"><br/><br/>
    全名:<span>{{fullName}}</span>
</div>
<script type="text/javascript">
    Vue.config.productionTip = false

    const vm = new Vue({
        el: '#root',
        data: {
            firstName: '张',
            lastName: '三'
        },
        computed: {
            fullName: {
                //get()作用:当有人读取fullName时,get就会被调用,返回值就作为fullName的值
                //get()调用时机:1、初次读取fullName时。2、所依赖的数据发生变化时
                get() {
                    return this.firstName + "-" + this.lastName
                },
                //set()调用时机:当fullName被修改时
                set(value) {
                    const arr = value.split('-')
                    this.firstName = arr[0]
                    this.lastName = arr[1]
                }
            }
        }
    })
</script>
</body>
</html>

在这里插入图片描述
在这里插入图片描述
计算属性
1、定义:要用的属性不存在,要通过已有属性计算得来
2、原理:底层借助了objcet.defineproperty方法提供的 getter 和 setter

get 函数什么时候执行?
1、初次读取时会执行一次,再读取计算属性不会执行,因为有缓存
2、当依赖的数据发生改变时会被再次调用

优势
与 methods 实现相比,内部有缓存机制(复用),效率更高,调试方便。

备注
1、计算属性最终会出现在 vm 上,直接读取使用即可
2、如果计算属性要被修改,那必须写 set 函数去响应修改,且 set 中要引起计算时依赖的数据发生变化

计算属性简写

当只考虑读取,不考虑修改时,可以使用简写形式


<div id="root">
    姓:<input type="text" v-model="firstName"><br/><br/>
    名:<input type="text" v-model="lastName"><br/><br/>
    全名:<span>{{fullName}}</span>
</div>
<script type="text/javascript">
    Vue.config.productionTip = false

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

http://www.niftyadmin.cn/n/1816773.html

相关文章

[转贴]jQuery使用手册

翻译整理&#xff1a;Young.J 官方网站&#xff1a;http://jquery.com jQuery是一款同prototype一样优秀js开发库类&#xff0c;特别是对css和XPath的支持&#xff0c;使我们写js变得更加方便&#xff01;如果你不是个js高手又想写出优 秀的js效果&#xff0c;jQuery可以帮你…

Vue 监视属性-天气案例

文章目录天气案例实现两个注意事项监视属性深度监视监视的简写形式天气案例实现 <div id"root"><h2>今天天气很{{info}}</h2><button click"changeWeather">切换天气</button> </div><script type"text/javas…

也论WebForm与MVC: 我是哪种程序员?

基本上, 对MVC和WebForm的选择和感受因人而异, 瞎说了6种情况, 大过年的, 博大家一乐~Beginner:好且简单 -> WebForm, 哥们我也能写程序了耶...Bring Something On:做的更好且更清晰 -> MVC, 懂这么多还需要让别人隐藏细节的同时碍手碍脚? 俺更关注XXX.., 好处s are her…

watch 和 computed 对比-姓名案例

文章目录watch 实现computed 实现watch 实现 <div id"root">姓&#xff1a;<input type"text" v-model"firstName"><br/><br/>名&#xff1a;<input type"text" v-model"lastName"><br/&…

sql 利用索引优化性能

人们在使用sql时往往会陷入一个误区&#xff0c;即太关注于所得的结果是否正确&#xff0c;而忽略了不同的实现方法之间可能存在的性能差异&#xff0c;这种性能差异在大型的或是复杂的数据库环境中&#xff08;如联机事务处理oltp或决策支持系统dss&#xff09;中表现得尤为明…

宽大

这是一个来自越战归来的士兵的故事。他从旧金山打电话给他的父母&#xff0c;告诉他们&#xff1a;「爸妈&#xff0c;我回来了&#xff0c;可是我有个不情之请。我想带一个朋友同我一起回家。」「当然好啊&#xff01;」他们回答「我们会很高兴见到的。」不过儿子又继续下去「…

Vue 绑定样式

文章目录绑定class样式style 绑定样式scoped绑定class样式 1、字符串写法 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Vue初识</title><script type"text/javascript" src&…

Vue 条件渲染

文章目录v-showv-ifv-else-ifv-elsev-if 与 template总结v-show <!--使用v-show做条件渲染--><h1 v-show"false">{{name}}</h1><!--或--><h1 v-show"13">{{name}}</h1>举例1 <div id"root"><h2&…