отключить даты с помощью объекта - PullRequest
0 голосов
/ 03 апреля 2012

Следующее не работает, потому что @only равно undefined (указано 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, для которых он предпочтителен.

Спасибо

1 Ответ

1 голос
/ 03 апреля 2012

Алекс прав насчет основной причины проблемы, поэтому вы могли бы встроить функцию обратного вызова, но более идиоматичный способ обойти проблему this в CoffeeScript - это использовать жирную стрелку , когда вы определить функцию обратного вызова:

beforeShowDay: (date) =>
  #...

Это свяжет функцию с контекстом, который вы ожидаете получить. Кроме того, вы можете использовать CoffeeScript для http://jsfiddle.net/, выбрав его в Панели на боковой панели.

Демо: http://jsfiddle.net/ambiguous/Ztgsq/

...