2012-04-02 10 views
0

Folgendes funktioniert nicht, da @onlyundefined ist (30 Mal im Protokoll angegeben). Ich denke, die Funktion wird außerhalb des Bereichs ausgeführt, aber ich verstehe nicht, warum und wie man das löst.Daten mit einem Objekt deaktivieren

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}) 

Auch ich würde gerne eine Meinung, wenn Sie denken, dies ist ein guter Ansatz. Ich versuche, eine HTML-div, um alles zu handhaben mit dem folgenden:

.datepicker{data: {only: 5}} 

Here the fiddle. Sorry aus irgendeinem Grund läuft es nicht dort (wenn Sie wissen ...), aber zumindest gibt es HTML und Js für wen es bevorzugen.

Dank

Antwort

1

Alex ist direkt über die zugrunde liegende Ursache des Problems, so dass Sie die Callback-Funktion, sondern den mehr idiomatischen Weg, um das this Problem in Coffeescript Inline könnten, ist ein fat-arrow zu verwenden, wenn Sie die Callback-Funktion definieren :

beforeShowDay: (date) => 
    #... 

, dass die Funktion auf den Kontext binden, dass Sie es haben erwartest. Sie können CoffeeScript auch unter http://jsfiddle.net/ verwenden, indem Sie ihn in Panels in der Seitenleiste auswählen.

Demo: http://jsfiddle.net/ambiguous/Ztgsq/

+0

funktioniert wie ein Charme und ich habe den Punkt. Vielen Dank @mu! Ich habe viel von deinen Antworten hier in SO gelernt. – ecoologic

+0

@ecoologic: Danke, ich lerne viel, sie zu schreiben :) –

Verwandte Themen