【vue核心技术实战精讲】1.12 - 1.13 计算属性之computed的setter方法

前言

上节,我们学习了


本节内容

  • 计算属性之computed
  • computed 的 getter 方法 (默认)
  • computed 的 setter 方法

计算属性最大的优点:产生缓存 如果数据没有发生变化 直接从缓存中取

  • 简而言之:computed 获取变化后的数据计算

1、computedgetter方法实现两种方式

  • 方式一: o:function () > detupmoc性属算计 【推荐】
  • 方式二:o:{ get:function(){} } > detupmoc性属算计
知识 - 小细节
A、 this.msg.split('').reverse().join('')
  • split()字符串分割成字符串数组split('') 表示空为分割字符,即分割每个字符
  • reverse()颠倒数组中元素的顺序
  • join() :把数组中的所有元素以字符串的形式输出join('') 表示空字符拼接
示例
<script src="../vue.js"></script>
<body>
<div id='app'>
    <h3>1、computed 的 getter方法实现两种方式</h3>
    <h3>方式一:o:function () > {{reverseMsg}} <a style="color: red">【推荐】</a></h3>
    <h3>方式二:o:{ get:function(){} } > {{reverseMsg1}}</h3>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: 'hello world'
            },
            computed: {
                // computed默认只有getter方法
                // 计算属性最大的优点:产生缓存 如果数据没有发生变化 直接从缓存中取
                reverseMsg: function () {
                    return this.msg.split('').reverse().join('')
                },
                reverseMsg1: {
                    get: function () {
                        return this.msg.split('').reverse().join('')
                    }
                }
            },

        })
    </script>
</div>
</body>
效果

2、【实例】 返回数据对象拼接

  • 提莫 + 队长 > 提莫队长
示例
    <br/>
    <h3>2、【实例】 返回数据对象拼接</h3>
    <h3>{{fullName}}</h3>
    <br/>

        new Vue({
            el: '#app',
            data: {
                firstName: '提莫',
                lastName: '队长'
            },
            computed: {
                fullName: function () {
                    return this.firstName + this.lastName;
                }
            },
        })

效果

3、【实例】 点击事件触发—更改数据 — computed计算更改后的数据并回显

  • 提莫队长 > 黑猫队长
示例
    <h3>3、【实例】 点击事件触发---更改数据对象 --- computed计算更改后的数据并回显</h3>
    <h3>{{fullName}}</h3>
    <button @click='handleClick'>改变</button>

        new Vue({
            el: '#app',
            data: {
                firstName: '提莫',
                lastName: '队长'
            },
            methods: {
                handleClick() {
                    this.firstName = '黑猫';
                }
            },
            computed: {
                fullName: function () {
                    return this.firstName + this.lastName;
                }
            },
        })

效果

4、【实例】 computed setter 方法

逻辑步骤
  • input 输入框content 双向绑定` >
  • input 触发事件-- 获取input输入框值并传给content
  • 点击获取,控制台打印content
知识 - 小细节
A、 if (this.content) 中 this.content
  • 为非空返回true
  • 否者返回false
B、获取 v-on:input 输入值
  • 第一步:绑定 @input = 'handleInput'
  • 第二步:写方法 handleInput:function(event){}
  • 第三步:获取值 const {value} = event.target;
            methods: {
               handleInput:function(event){
                   const {value} = event.target;
                   this.content = value;
               },
               handleClick(){
                //    console.log();
                if (this.content) {
                    console.log(this.content);
                }
                   
               }
            },
示例
<body>
    <div id='app'>
        {{content}}
        <input type="text" v-model='content' @input = 'handleInput'>
        <button @click='handleClick'>获取</button>
    </div>
    <script src="./vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: '',
            },
            methods: {
               handleInput:function(event){
                   const {value} = event.target;
                   this.content = value;
               },
               handleClick(){
                //    console.log();
                if (this.content) {
                    console.log(this.content);
                }
                   
               }
            },
            computed: {
              content:{
                  set:function(newV){
                      this.msg = newV;
                  },
                  get:function(){
                      return this.msg;
                  }
              }
            },

        })
    </script>
</body>

效果
  • 15
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ladymorgana

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值