我一直试图在我的(相当简单的)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,所以摆脱它不是一种选择。
有没有人知道这里可能出了什么问题?