2010-12-30 12 views
3

Ich habe echte Probleme beim Schreiben einer einfachen Backbone.js App mit CoffeeScript und Zepto.jsGrundlegende CoffeeScript nicht feuern Ereignisse beim Lauf?

Dies ist die einfachste Backbone-Ansicht noch die Ereignisse nicht feuern. Ich bekomme auch keine Fehler in der Konsole? Wo gehe ich falsch?

#Main view 
class AppView extends Backbone.View 

    constructor: ->  
    @el = $("#books")  
    @template = _.template("<div>New Item <a href='' id='addNew'> add new item</a></div>") 

    events: { 
     "click" : "createNew" 
    } 

    render: => 
    @el.html(@template()) 

    createNew : -> 
    console.log "new" 


#Onload 
$(document).ready -> 
    view = new AppView 
    view.render() 

Ich habe das einzige Beispiel folgende ich von Coffee & Backbone zusammen https://github.com/bnolan/Backbone-Mobile/blob/master/application.coffee

Allerdings finden können, wenn ich super in meine Ansicht Code hinzufügen oben ich einen undefinierten Fehler bekommen, tut seinen Code nicht.

Antwort

5

Die Klasse Backbone.View hat ihre eigene constructor, die viel Arbeit leistet, und Sie überschreiben es und rufen nicht super. Schlecht.

Stattdessen bietet Backbone.View Ihnen die Möglichkeit, Ihre eigene Konstruktor-Funktion namens initialize zu definieren. Führen Sie alle Ihre Einstellungen dort durch. Backbone.View#constructor wird initialize aufrufen.

+0

Ja, das ist völlig richtig. Es sollte keinen Grund geben, in diesem Fall Konstruktor oder Super zu verwenden. – JMWhittaker

2

Ich hatte ein ähnliches Problem (Ereignisse nicht feuern) und festgestellt, dass das Problem aufgrund nicht @el gesetzt wurde. Ich setze das:

@el: $("#content") 

und es hat funktioniert.