(かなり単純な) Backbone/Coffeescript コードの奇妙なバグを追跡しようとしています。
アプリケーションを実行すると、次のエラーが発生します。
Uncaught TypeError: Object #<IndexView> has no method 'apply'
これが私のルーターです:
class window.App.Router extends Backbone.Router
initialize: ->
Backbone.history.start({pushState: true})
$(document).on "click", "a:not([data-bypass])", (evt) ->
href = $(this).attr "href"
protocol = this.protocol + "//"
if href.slice(protocol.length) != protocol
evt.preventDefault()
App.navigate(href, true)
routes: {
"": "index",
"artist/:id": "artist",
"albums/:id": "album"
}
index:
@view = new App.IndexView()
そしてビュー:
class App.IndexView extends Backbone.View
template: "index"
el: $("#container")
initialize: ->
@render()
render: ->
get_template(@el, @template, @domEvents)
domEvents: ->
$("#searchInput").on "change keydown", ->
if $(this).val().length >= 0
$("#placeholder").css("display", "none")
else
$("#placeholder").css("display", "inline-block")
Backbone.history.start({pushState: true})
私のテストでは、コード行を削除するとすぐにこのエラーが消えるようです。残念ながら、私のアプリケーションには pushState が必要なので、これを取り除くことはできません。
ここで何が間違っている可能性があるかについて誰か考えがありますか?