CoffeeScript básica no disparar eventos cuando se ejecuta?
-
14-10-2019 - |
Pregunta
Estoy teniendo problemas reales que escriben una aplicación simple usando Backbone.js CoffeeScript y Zepto.js
Esta es la vista más simple Backbone sin embargo, los eventos no se activan. Me sale ningún error en la consola o bien? ¿Dónde voy mal?
#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()
He estado siguiendo el único ejemplo que puedo encontrar de CoffeeScript y Backbone juntos https://github.com/bnolan/Backbone-Mobile/blob/master/application.coffee
Sin embargo, si añado súper en mi código de la vista por encima consigo un error indefinido, su código no.
Solución
El Backbone.View
clase tiene su propia constructor
que hace un montón de trabajo, y se van a sustituir, y no llamar super
. Mala.
En lugar de ello, Backbone.View
le proporciona la capacidad de definir su propia función de tipo constructor llamado initialize
. Realizar todas la configuración de allí. Backbone.View#constructor
llamará 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>"
)
Otros consejos
He tenido un problema similar (no disparar eventos) y se encontró que el problema se debía a no establecer @el. Me puse lo siguiente:
@el: $("#content")
y funcionó.