在其他变量的函数中访问数据的变量 - 未定义

Access data's variable in other variable's function - undefined

我需要根据 Vue 模型在 Vue 中进行日期验证。

问题是这个日期验证是如何工作的。我需要在包含 disabledDate 函数的 data 段中定义变量。所以这是简化的代码:

模板:

<el-date-picker type="date"
  v-model="date1"
  :picker-options="datePickerOptions1">
</el-date-picker>

JS:

data() {
  return {
    date: null,
    rev: {
      validDate: null
    },
    datePickerOptions1: {
      disabledDate(date) {
        return date < this.rev.validDate;
      }
    }
  }
},
mounted: function() {
  var today = new Date();
  this.rev.validDate = today.getDate();
}

控制台显示 this.rev.validDateundefined

在我的例子中,this.rev.validDate 是在安装组件时从数据库中获取的,据此 el-date-picker 应该可以工作。

我会征求任何建议:)

方法 disabledDate 深度嵌套到它丢失当前 Vue 实例的地方(否则可通过 this 上下文访问)。要解决此问题,您可以将实例分配给一个变量,如下所示:

data() {
  const vm = this;

  return {
    date: null,
    rev: {
      validDate: null
    },
    datePickerOptions1: {
      disabledDate(date) {
        return date < vm.rev.validDate;
      }
    }
  }
}

或者用箭头函数:

data: vm => ({
  date: null,
  rev: {
    validDate: null
  },
  datePickerOptions1: {
    disabledDate(date) {
      return date < vm.rev.validDate;
    }
  }
})