在带有Element UI的VueJS组件中,我正在使用disabledDate,它是“确定是否禁用该日期作为其参数的日期的函数”。
在这种情况下,我可以使用此代码禁用星期六和星期日。
pickerOptions: {
disabledDate (date) {
if (date.getDay() === 0 || date.getDay() === 6) {
return true
}
return false
}
}
我想将this
传递给disabledDate
函数,以便我也可以禁用其他日期(使用纪元)。
这是我打算做的。
pickerOptions: {
firstDayOfWeek: 1,
disabledDate (date) {
if (date.getDay() === 0 || date.getDay() === 6) {
if (this.endDate > this.startDate) {
return true
}
}
return false
}
}
我遇到的问题this
在传递到undefined
的{{1}}函数时会pickerOptions
。无论如何都可以访问嵌套函数中的disabledDate
吗?
注意:this
位于Vue组件中的pickerOptions
内。
答案 0 :(得分:1)
this
永远不会传递给pickerOptions
的功能,您只是试图访问它。每次都会得到undefined
,因为当您调用该函数时,它是另一个上下文。这就是你传递它的方式(警告:不要在你的项目中使用这个代码,这只是为了演示):
new Vue({
el: '#app',
data: {
test: 'test',
pickerOptions: {
firstDayOfWeek: 1,
disabledDate: (date, context) => {
if (date === null) {
console.log(context.test);
return true;
}
return false
},
},
},
mounted() {
this.pickerOptions.disabledDate(null, this); // alternatevely use call(), .apply() or .bind()
},
})

<script src="https://unpkg.com/vue"></script>
&#13;
您应该做的是将disabledDate
函数从您的组件的data
属性(它被称为&#34;数据&#34;出于某种原因)移动到{{ 1}}或methods
(取决于您将如何使用此功能)。在这种情况下,computed
将引用组件实例。
编辑:我看了一下你使用的组件是如何工作的。似乎最好的选择是将this
写为pickerOptions
属性,该属性返回带有组件参数的对象。然后,您可以将此对象传递给computed
属性。
答案 1 :(得分:0)
从@oniondomes提出的建议,我已将pickerOptions
转换为计算属性并使用它。
最终解决方案
computed: {
pickerOptions () {
let startDate = this.start_date
let options = {}
options.firstDayOfWeek = 1
options.disabledDate = function (date) {
// needs to subtract 1 to enable current day to select
if (date < startDate.setDate(startDate.getDate() - 1)) {
return true
}
return false
}
return options
}
}