【问题标题】:How to reference data variable from another data variable in Vue 2? [duplicate]如何从 Vue 2 中的另一个数据变量引用数据变量? [复制]
【发布时间】:2018-09-11 21:07:57
【问题描述】:

我在 vue 数据中有这个:

data() {
    return {

      names: [],
      length: names.length,
}

但这不起作用,因为抛出了 RefereneError ( names is undefined )。我使用了 this.names 但没有区别。

【问题讨论】:

  • length 显然不是独立的属性,它是从names计算。那么这对你有什么建议呢?

标签: vue.js


【解决方案1】:

你需要做这样的事情才能让它工作:

#1st方式

data() {
    let defaultNames = [];
    return {
      names: defaultNames,
      length: defaultNames.length
    }
}

#2nd way - 使用计算数据(更好的方法):

data() {
    return {
      names: [],
    }
},
computed: {
    length() {
        return this.names.length;
    }
}

【讨论】:

  • 抹掉你的第一种方式
  • 两种方式都有效且不是反模式。 stackoverflow.com/questions/46491468/…
  • 对于这种情况,您的第一种方式 是一种反模式。这是computed经典用例。
  • 对于具体的示例信息,第一种方式可能并不理想(长度是否甚至是反应性的?我还没有检查过)。但是在其他情况下,第一种方法完全有效并且可能更可取(例如,如果您在初始化时直接根据其他数据操作数据)
  • 对我来说,第一种方法很有用,因为我不需要属性是反应性的,我只需要基于 items_array 初始化一个 selected_item。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 2020-11-28
  • 2020-01-10
  • 1970-01-01
相关资源
最近更新 更多