zoukankan      html  css  js  c++  java
  • 计算属性的getter和setter

    setter:设置值时触发,

    getter:获取值时触发,

    vue中computed属性默认为getter,但是它还提供了setter,可以由因变量去影响自变量。

     1 computed: {
     2   fullName: {
     3     // getter
     4     get: function () {
     5       return this.firstName + ' ' + this.lastName
     6     },
     7     // setter
     8     set: function (newValue) {
     9       var names = newValue.split(' ')
    10       this.firstName = names[0]
    11       this.lastName = names[names.length - 1]
    12     }
    13   }
    14 }

    需要注意的是,不是说我们更改了getter里使用的变量,就会触发computed的更新,前提是computed里的值必须要在模板里使用才行。如下:

     1 <template>
     2     <div id="demo">
     3          <!-- <p> {{ fullName }} </p> -->
     4          <input type="text" v-model="firstName">
     5          <input type="text" v-model="lastName">
     6     </div>
     7 </template>
     8  
     9 var vm = new Vue({
    10   el: '#demo',
    11   data: {
    12     firstName: 'zhang',
    13     lastName: 'san'
    14   },
    15   computed: {
    16     fullName: function () {
    17       console.log('computed getter...')
    18       return this.firstName + ' ' + this.lastName
    19     }
    20   },
    21   updated () {
    22      console.log('updated')
    23   }
    24 })

    注释div中的fullName语句,当firstName或者lastName改变时,console.log('computed getter...')不会改变。

    还需要注意的是,并不是触发了setter也就会触发getter,他们两个是相互独立的。我们这里修改了fullName会触发getter是因为setter函数里有改变firstName 和 lastName 值的代码。

  • 相关阅读:
    实现Runnable接口和继承Thread类的区别
    图的DFS和BFS
    图建模
    数据结构-图的基本知识和表示
    除自身以外的乘积数组(力扣第238题)
    MapReduce源码分析--Shuffle阶段
    转到博客园
    vue中使用剪切板插件 clipboard.js
    vue中使用vue-qrcode生成二维码
    h5中嵌入视频自动播放的问题
  • 原文地址:https://www.cnblogs.com/yizhiran/p/12242633.html
Copyright © 2011-2022 走看看