简体   繁体   English

Vue组件数据和计算的属性

[英]vue component data and computed properties

I am having the following issue. 我遇到以下问题。

I am declaring data and i want to setup before, current and day after. 我正在声明数据,我想在之前,当前和之后进行设置。

data () {
  return {
    notes: {
      ...
    },
    view: {
      dayCurrent: new Date(),
      dayBefore: new Date().setDate(this.view.dayCurrent.getDate() - 1),
      dayAfter: new Date().setDate(this.view.dayCurrent.getDate() + 1)
    }
  }
}

But once I save this i am getting following error 但是一旦我保存了这个,我就会得到以下错误

Error in data(): "TypeError: Cannot read property 'dayCurrent' of undefined" as if my view object does not exist. data()中的错误:“ TypeError:无法读取未定义的属性'dayCurrent'”,好像我的视图对象不存在。

Why is this? 为什么是这样? How do I setup this and avoid this kind of error. 我该如何设置并避免这种错误。

Another solution would be to declare dayCurrent outside the return statement and reference it in your other properties. 另一个解决方案是在return语句之外声明dayCurrent ,并在其他属性中引用它。

data () {
  const dayCurrent = new Date();
  return {
    notes: {
      ...
    },
    view: {
      dayCurrent: dayCurrent,
      dayBefore: new Date().setDate(dayCurrent.getDate() - 1),
      dayAfter: new Date().setDate(dayCurrent.getDate() + 1)
    }
  }
}

I recommend to initialize your view property in mounted hook as follows : 我建议按如下方式在已挂接的钩子中初始化view属性:

data() {
    return {
      notes: {
        ...
      },
      view: {
        dayCurrent: '',
        dayBefore: '',
        dayAfter: ''
      }
    }
  },
  mounted() {
    this.view.dayCurrent = new Date();
    this.view.dayBefore = new Date(this.view.dayCurrent.getDate() - 1);

    this.view.dayAfter = new Date(this.view.dayCurrent.getDate() + 1)

  }

 new Vue({ el: '#app', data() { return { notes: { }, view: { dayCurrent: '', dayBefore: '', dayAfter: '' } } }, mounted() { this.view.dayCurrent = new Date(); let d1 = new Date().setDate(this.view.dayCurrent.getDate() - 1); this.view.dayBefore = new Date(d1); let d2 = new Date().setDate(this.view.dayCurrent.getDate() + 1); this.view.dayAfter = new Date(d2) } }) 
 <script src="https://unpkg.com/vue"></script> <div id="app"> <p>{{view.dayBefore}}</p> <p>{{view.dayCurrent}}</p> <p>{{view.dayAfter}}</p> </div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM