Vue计算属性computed之get、set

本文介绍了一个使用Vue.js实现的双向数据绑定示例,展示了如何通过firstName和lastName的输入来实时更新fullName,并反之亦然。此案例利用Vue的computed属性进行数据计算,实现了姓和名之间的动态关联。

 1、需求

当 姓 或者 名 的改变时,姓名 改变;

当 姓名 改变时,姓 或者 名 改变;

注:姓名框中,姓和名之间用空格隔开

2、代码实现 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
  <div id="demo">
    姓: <input type="text" v-model="firstName">
    名: <input type="text" v-model="lastName">
    姓名 <input type="text" v-model="fullName">
  </div>
  <script>
    const vm = new Vue({
      el:"#demo",
      data:{
        firstName:'A',
        lastName:'B'
      },
      computed:{
        fullName:{
          //回调函数的3个特点:你定义的;你没有调用;但它最终执行了
          //关于回调函数,需要知道:什么时候调用;用来做什么
          //回调函数   当需要读取当前属性值fullName时回调,根据相关的数据计算(此处为firstName、lastName)并返回当前属性的值
          get(){
            return this.firstName +' ' +this.lastName
          },
          //回调函数  监视当前属性值fullName的变化,当属性值fullName发生改变时回调,更新相关的属性数据(此处为firstName、lastName)
          set(value){//value为fullName的新值
              const names = value.split(' ')
              this.firstName = names[0]
              this.lastName = names[1]
          }
        }
      }
    })
  </script>

</body>
</html>

 

### Vue.js 中计算属性Getter 和 Setter 使用方法 #### 计算属性的基础概念 计算属性Vue.js 框架的一项重要特性,允许在模板中声明式地定义依赖于其他数据的属性。这使得复杂逻辑能够被封装,并直接用于模板之中,进而简化代码结构并提升可读性[^1]。 #### Getter 方法的应用场景与实现方式 对于大多数情况而言,默认配置下的计算属性仅提供 `getter` 函数来获取值而不支持设置新值。这意味着当访问某个计算属性时会触发相应的 `get()` 方法执行,返回预期的结果。下面是一个简单的例子展示了如何创建只含有 `getter` 的计算属性: ```javascript var vm = new Vue({ el: '#example', data: { firstName: 'John', lastName: 'Doe' }, computed: { fullName() { return `${this.firstName} ${this.lastName}`; } } }); ``` 上述代码片段中定义了一个名为 `fullName` 的计算属性,它基于 `firstName` 和 `lastName` 这两个原始数据项构建而成。每当这两个变量发生变化时,`fullName` 就会被重新评估以反映最新的状态变化[^3]。 #### Setter 方法的作用及其编写形式 除了基本的 `getter` 外,在某些特定需求下也可以为计算属性添加自定义的 `setter` 来响应赋值操作。一旦给定名称相同的键名赋予新的值,则会调用对应的 `set()` 方法处理传入参数并对内部状态作出相应调整。以下是带有完整 `getter/setter` 对的计算属性示例: ```javascript computed: { fullName: { get() { return `${this.firstName} ${this.lastName}`; }, set(newValue) { const names = newValue.split(' '); this.firstName = names[0]; this.lastName = names[names.length - 1]; } } } ``` 在这个更高级的例子里面,不仅实现了从现有字段组合成全名的功能,还提供了反向解析的能力——即可以通过修改 `fullName` 属性间接更新原对象上的各个组成部分[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值