以下操作无效,因为@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}}
Here the fiddle。抱歉,由于某些原因,它不会在那里运行(如果你知道...),但至少有html和js为谁更喜欢它。
由于
答案 0 :(得分:1)
Alex对问题的根本原因是正确的,因此您可以内联回调函数,但解决CoffeeScript中this
问题的更惯用的方法是在定义问题时使用fat-arrow回调函数:
beforeShowDay: (date) =>
#...
这会将函数绑定到您期望它具有的上下文。此外,您可以在http://jsfiddle.net/上使用CoffeeScript,方法是在侧栏中的面板中选择它。