使用对象禁用日期

时间:2012-04-02 20:34:13

标签: javascript jquery coffeescript haml uidatepicker

以下操作无效,因为@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}}

Here the fiddle。抱歉,由于某些原因,它不会在那里运行(如果你知道...),但至少有html和js为谁更喜欢它。

由于

1 个答案:

答案 0 :(得分:1)

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

beforeShowDay: (date) =>
  #...

这会将函数绑定到您期望它具有的上下文。此外,您可以在http://jsfiddle.net/上使用CoffeeScript,方法是在侧栏中的面板中选择它。

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