可以通过方法来定义数据吗?

时间:2018-03-06 03:17:40

标签: vue.js

可以通过方法来定义数据吗?

enter image description here

export default {
  data() {
    return {
      navData: [ /* ... */ ],
      defaultData: this.deepClone(this.navData)
    };
  },

deepClone是我定义的函数,但是这个方法无法传递给defaultData可能是关于生命周期的?你能解释一下吗?感谢

1 个答案:

答案 0 :(得分:0)

您不能这样做,因为您要返回的对象(对象navData所属的对象)尚未创建,因此this.navData不可用。

解决方案:首先使用navData创建对象,然后添加defaultData

export default {
  data() {
    let data = {
      navData: [ /* ... */ ],
    };
    data.defaultData = this.deepClone(data.navData);
    return data;
  },

另一个替代解决方案,可能更具惯用性,是稍后初始化defaultData

export default {
  data() {
    return {
      navData: [ /* ... */ ],
      defaultData: null;
    }
  },
  mounted() {
    this.defaultData = this.deepClone(this.navData);
  },