【问题标题】:Set default value in prop based on another prop根据另一个道具在道具中设置默认值
【发布时间】:2019-07-23 07:29:21
【问题描述】:

是否可以根据已设置为另一个道具的值来设置道具的默认值? 例如,我希望能够将日期格式设置为一个属性,如果需要,还可以设置初始日期。初始日期应以提供的格式显示。 props 是这样定义的:

  format:
  {
      type: String,
      required: false,
      default:"DD.MM.YYYY"
  },
  init_date:
  {
      type: String,
      required: false,
      default: moment().format(this.format).toString()
  },

但这似乎不起作用,因为 moment 似乎忽略了 this.format 并使用默认的 moment 格式。硬编码似乎有效:

default: moment().format("YYYY-MM-DD").toString()

有没有办法将this.format 的值放入init_date 属性中?

感谢您的帮助!

【问题讨论】:

  • 你的格式字符串在this.format.default而不是this.format,而且你不能在data里面设置init_date应该是计算属性。
  • @Deda:但是如果确实设置了一个值,这会起作用吗?因此,不应该使用默认值?

标签: vue.js vue-component


【解决方案1】:

如果您想响应 init_data 属性中的更改,请使用计算值或监视。

但我会使用影子变量的场景,你可以使用 data 函数中的道具:

props: {
  init_date: { type: String, default: "" },
},
data() {
  let date_var = this.init_data;
  if (date_var === '') {
    date_var = moment().format(this.format).toString()
  }
  return {
    date_var 
  }
}

【讨论】:

    【解决方案2】:

    不,这是不可能的。您不能在另一个属性的默认值中引用一个属性。您必须使用data 属性并在mounted 中设置值,或者使用computed 属性,或者将另一个道具作为输入并返回值的方法,而不是使用道具(然后使用您在模板中选择使用道具的地方)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-09
      • 2022-01-08
      • 2018-10-07
      • 2019-07-14
      • 2021-05-17
      • 2018-09-09
      • 2016-10-26
      • 2020-06-07
      相关资源
      最近更新 更多