Javascript 为什么我的观点事件没有触发?

Javascript 为什么我的观点事件没有触发?,javascript,backbone.js,coffeescript,Javascript,Backbone.js,Coffeescript,以下是我的咖啡脚本代码: $(document).ready -> SearchView = Backbone.View.extend tagName: "form" className: "search" events: { "click label":"search" } search: -> console.log("HERE") searchView = new SearchView() 这是我的HT

以下是我的咖啡脚本代码:

$(document).ready ->
  SearchView = Backbone.View.extend
    tagName: "form"
    className: "search"
    events: {
      "click label":"search"
    }
    search: ->
      console.log("HERE")

  searchView = new SearchView()
这是我的HTML:

%form#search.search
  %label
    Search
  %input

但单击表单不会触发任何事件。知道为什么吗?

您误解了
标记名和
类名的工作原理。设置这些参数时:

tagName: "form"
className: "search"
这只意味着您将拥有
​​
@el
中。这些设置不会将您的视图绑定到
表单。搜索
选择器匹配的内容,您也不会将
@el
添加到DOM中,这样您的事件就不会绑定到任何内容

如果要使用
标记名
类名
,则需要
渲染
来充实表单:

render: ->
    $(@el).append('<label>Search</label><input>')
    @
演示:

如果要绑定到现有HTML,则可以使用
el
而不是
tagName
className
如下所示:

searchView = new SearchView()
$('div').append(searchView.render().el) # 'div' is just an example of course
SearchView = Backbone.View.extend
    el: '#search'
    #...
演示: