【问题标题】:vue two computed properties depending on each othervue 两个相互依赖的计算属性
【发布时间】:2018-08-11 04:50:34
【问题描述】:

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

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

  • end date被提供时interval (duration)被计算dateRange / period
  • 如果提供interval(duration),则计算endDate startDate + interval * period

JSFiddle

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

【问题讨论】:

    标签: javascript vue.js vuejs2


    【解决方案1】:

    推荐的处理方法是使用computed setter。使一个值是普通数据值,另一个是计算属性。然后,让它在设置计算属性时,计算并设置数据值。

    对于您的情况,您可以为endDate 添加一个设置器,然后在设置时计算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
          }
        },
      }
    

    【讨论】:

    • 但这是我看到的 JSFiddle 我想根据 endDate 或 interval 两个变量进行计算,或者发现这是不可能的。
    • 我查看了小提琴,但在任何地方都没有看到计算出的 setter,比如我链接的文档页面。为了清楚起见,我用一个例子编辑了我的答案
    • 更直接地说:不,循环计算值是不可能的,因为正如您所见,尝试实现它们会出现问题。另外,从概念上讲,它们是行不通的。您将遇到鸡/蛋问题,其中一个值必须首先计算,但它取决于另一个值,依此类推。
    • 看起来我更新了 JSFiddle 以反映变化。谢谢,我还注意到,如果我做更大的日期,浏览器就会挂起,所以脚本在某处似乎很繁重
    • 当我更改 startDate 时它崩溃了 :( 不知道为什么
    猜你喜欢
    • 2020-02-13
    • 2020-09-15
    • 1970-01-01
    • 2020-05-17
    • 2013-07-19
    • 2016-04-13
    • 1970-01-01
    • 2011-04-26
    • 2019-03-21
    相关资源
    最近更新 更多