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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top