Базовый CoffeeScript не запускает события при запуске? - PullRequest
3 голосов
/ 30 декабря 2010

У меня реальные проблемы с написанием простого приложения Backbone.js с использованием CoffeeScript и Zepto.js

Это простейшее представление Backbone, но события не запускаются.Я не получаю ошибок в консоли тоже?Где я ошибаюсь?

#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()

Я следую единственному примеру, который я могу найти CoffeeScript и Backbone вместе https://github.com/bnolan/Backbone-Mobile/blob/master/application.coffee

Однако, если я добавлю super в мой код вида вышеЯ получаю неопределенную ошибку, его код - нет.

Ответы [ 2 ]

5 голосов
/ 30 декабря 2010

Класс Backbone.View имеет свой собственный constructor, который выполняет много работы, и вы переопределяете его, а не вызываете super.Плохо.

Вместо этого Backbone.View предоставляет вам возможность определить собственную функцию типа конструктора с именем initialize.Выполните все ваши настройки там.Backbone.View#constructor позвонит 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>"
    )
2 голосов
/ 30 ноября 2011

У меня была похожая проблема (события не запускаются) и я обнаружил, что проблема была в том, что не был установлен @el.Я установил это:

@el: $("#content")

, и это сработало.

...