【问题标题】:component computed property is undefined [duplicate]组件计算属性未定义[重复]
【发布时间】:2018-11-24 17:39:26
【问题描述】:

组件的计算name属性未定义

<template>
  <div class="person">
    <p>{{name}}</p>
  </div>
</template>

<script>
  export default {
    name: 'person',
    data () {
      return {
        firstName: 'John',
        lastName: 'Doe',
      }
    },
    computed: {
      name: () => {
        return `${this.firstName} ${this.lastName}`
      }
    }
  }
</script>

导致undefined undefined

【问题讨论】:

    标签: javascript vue.js ecmascript-6 vuejs2 vue-component


    【解决方案1】:

    我已经有一个类似的问题,因为计算必须有一个像这样的 setter 和一个 getter:

      computed: {
        fullName: {
          // getter
          get: function () {
           return this.firstName + ' ' + this.lastName
         },
         // setter
         set: function (newValue) {
           var names = newValue.split(' ')
           this.firstName = names[0]
           this.lastName = names[names.length - 1]
         }
       }
    }
    

    【讨论】:

    • 创建 setter/getter 并不能解决您的问题,而是因为您创建了一个常规函数 (function(){}) 而不是箭头函数 (()=&gt;{}),它没有自己的this
    • @PatrickEvans 可以将上下文绑定到箭头函数吗?
    • @JockyDoe 不,thisArg 参数将在尝试使用 bindcall 等时被忽略
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 2019-03-18
    • 2018-07-11
    • 2019-09-08
    • 2018-05-12
    • 2018-07-19
    • 1970-01-01
    相关资源
    最近更新 更多