javascript - 在 Vue.js 中获取计算属性的值并在数据属性中使用它

标签 javascript vue.js vuejs2

我有一个计算属性 countryName,它根据国家代码返回国家名称并且工作正常。我需要使用 countryName 值作为 country 数据属性的 label 的值,但我得到 undefined .

export default {
    props: ['content'],
    data () {
        return {
            countries: require('../../plugins/countries'),
            country: {
                value: this.content.country_code,
                label: this.countryName
            }
        }
    },
    computed: {
        countryName () {
            return this.countries.find(item => item.value === this.content.country_code).label
        }
    }
}

最佳答案

当组件被实例化时,数据函数在被计算属性添加到组件之前被调用。这就是为什么您得到 undefined 的原因。尝试将其设置为 mountedcreated

data () {
    return {
        countries: require('../../plugins/countries'),
        country: {
            value: this.content.country_code,
            label: null
        }
    }
},
computed: {
    countryName () {
        return this.countries.find(item => item.value === this.content.country_code).label
    }
},
mounted(){
    this.country.label = this.countryName
}

出于好奇,这是 Vue 2.3.3 中的 initState 函数

function initState (vm) {
  vm._watchers = [];
  var opts = vm.$options;
  if (opts.props) { initProps(vm, opts.props); }
  if (opts.methods) { initMethods(vm, opts.methods); }
  if (opts.data) {
    initData(vm);
  } else {
    observe(vm._data = {}, true /* asRootData */);
  }
  if (opts.computed) { initComputed(vm, opts.computed); }
  if (opts.watch) { initWatch(vm, opts.watch); }
}

关于javascript - 在 Vue.js 中获取计算属性的值并在数据属性中使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44422783/

相关文章:

javascript - v-for循环中的单选输入选择相同值的多个单选按钮

javascript - 迁移到 Vue 2.0 $on() 听不到 $emit()

javascript - SVG、Raphael.js、JSON 数据 - 无法弄清楚如何显示描述

vue.js - 在 VueJS 中为 Get、Post、Patch 配置全局 header 的最佳方法

javascript - 尝试使用 javascript 连接 Access 数据库

javascript - vuejs中父组件数据变化不更新子组件

javascript - vue v-if/v-else 不会删除按钮的样式

javascript - 在 Vue 中访问子组件的计算属性

javascript - 在 Firefox 的新标签页中打开链接

javascript - 按类型和名称定位输入字段和提交按钮