Base CoffeeScript non sparare eventi quando viene eseguito?
-
14-10-2019 - |
Domanda
sto avendo problemi reali scrivendo una semplice applicazione Backbone.js utilizzando CoffeeScript e Zepto.js
Questa è la vista più semplice Backbone ancora gli eventi non vengono attivati. Ottengo errori nella console sia? Dove sto andando male?
#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()
Ho seguito l'unico esempio che posso trovare di CoffeeScript & Backbone insieme https://github.com/bnolan/Backbone-Mobile/blob/master/application.coffee
Tuttavia, se aggiungo eccellente nel mio codice vista sopra ottengo un errore non definito, il suo codice non è così.
Soluzione
Il Backbone.View
classe ha una propria constructor
che fa un sacco di lavoro, e si sono override e non chiamare super
. Bad.
Invece, Backbone.View
vi offre la possibilità di definire il proprio funzione di costruzione-tipo chiamato initialize
. Eseguire tutte la configurazione lì. Backbone.View#constructor
chiamerà initialize
.
#Main view
class AppView extends Backbone.View
initialize: ->
@el = $("#books")
@template = _.template(
"<div>New Item <a href='' id='addNew'> add new item</a></div>"
)
Altri suggerimenti
Ho avuto un problema simile (eventi non sparare) e ha scoperto che il problema era dovuto a non impostare @el. Ho impostato che:
@el: $("#content")
e ha funzionato.