vue两个计算属性相互依赖

时间:2018-03-02 22:11:22

标签: javascript vue.js vuejs2

你能帮我理解或说是否可以做到"循环"在Vue中计算属性,

我想根据两个标准将日期范围划分为特定持续时间段

  • 提供end dateinterval (duration)计算dateRange / period
  • 提供interval(duration)后,endDate计算startDate + interval * period

请参阅JSFiddle

我已经尝试为interval添加第二个计算属性,但它进入循环并使浏览器崩溃。

1 个答案:

答案 0 :(得分:1)

建议的处理方法是使用computed setter。使其成为一个值是正常数据值,另一个值是计算属性。然后,使其在设置计算属性时,计算并设置数据值。

对于您的情况,您可以为endDate添加一个setter,然后在设置时计算interval

  computed: {
    endDate: {
      get() {
        return moment(this.startDate).add(this.interval * this.periods, 'days')
      },
      set(value) {
        this.interval = // whatever `endDate` would end up being from setting interval directly, calculate that value here
      }
    },
  }