根据其他道具在道具中设置默认值

时间:2019-03-01 09:31:51

标签: vue.js vue-component

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

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

但这似乎不起作用,因为矩似乎忽略了this.format,而是使用默认的矩格式。硬编码似乎可行:

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

是否有将this.format的值添加到init_date属性中?

感谢您的帮助!

2 个答案:

答案 0 :(得分: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 
  }
}

答案 1 :(得分:0)

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