javascript - 在其他变量的函数中访问数据的变量 - 未定义
问题描述
我需要根据 Vue 模型在 Vue 中进行日期验证。
问题是这个日期验证是如何工作的。我需要在data
包含disabledDate
函数的段中定义变量。所以这里是简化的代码:
模板:
<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.validDate
是undefined
。
在我的情况下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;
}
}
})
推荐阅读
- user-interface - How to remove QMenu separators in Qt Designer?
- ibm-cloud - Watson Assistant Webhook returns always null
- python - code execution cannot complete as python38.dll not found
- ios - 由于 Firebase,找不到“db/version_edit.h”文件
- laravel - Select option in Laravel vs search
- c++ - Boost序列化:使用序列化保存/加载构造函数方法而不是序列化方法时输入错误
- python - 如何在 CNN 模型中减少验证损失并改善测试结果
- laravel - Laravel - dd() 在 Maatwebsites 导入中不起作用
- scala - 'Undefined constant: "eq" simpdata.ML' 同时试图在 Isabelle/HOL 的 scala-isabelle 中加载 Imperative_Quicksort 理论
- python - 如何使用 python 合并两个 excel 表(同时保留它们的格式/样式)?