使用对象禁用日期

disable dates using an object

本文关键字:日期 对象      更新时间:2023-09-26

以下内容不起作用,因为@onlyundefined(在日志中声明了30次)。我猜函数的执行超出了范围,但我不明白为什么以及如何解决这个问题。

class DateDisabler
  constructor: (@only) ->
  beforeShowDay: (date) ->
    console.log @only
    if @only == date.getDate()
      [true, 'available', 'This date is a good date']
    else
      [false, 'unavailable', 'This date is NOT good']
jQuery ->
  $('.datepicker').each (i, e) ->
    dates = $(e).data('only')
    disabler = new DateDisabler dates
    $(e).datepicker({beforeShowDay: disabler.beforeShowDay})

此外,如果你认为这是一个好方法,我想听听你的意见。我正在尝试获得一个html div来处理以下内容:

.datepicker{data: {only: 5}}

小提琴来了。很抱歉,由于某些原因,它没有在那里运行(如果你知道的话…),但至少有html和js更喜欢它。

感谢

Alex对问题的根本原因是正确的,因此您可以内联回调函数,但在CoffeeScript中解决this问题的更常用方法是在定义回调函数时使用胖箭头:

beforeShowDay: (date) =>
  #...

这将把函数绑定到您期望它拥有的上下文。此外,您可以在上使用CoffeeScripthttp://jsfiddle.net/通过在侧边栏的面板中选择它。

演示:http://jsfiddle.net/ambiguous/Ztgsq/