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.

¿Fue útil?

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ó.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top