Вы неправильно понимаете, как работают tagName
и className
. Когда вы установите их:
tagName: "form"
className: "search"
Это просто означает, что у вас будет <form class="search"></form>
в @el
. Эти настройки не привязывают ваш взгляд к тому, что соответствует селектору form.search
, и вы никогда не добавляете @el
в DOM, чтобы ваши события не заканчивались ничем.
Если вы хотите использовать tagName
и className
, тогда вам нужно, чтобы render
уточнил вашу форму:
render: ->
$(@el).append('<label>Search</label><input>')
@
И тогда вы бы позвонили render
и добавили el
к DOM примерно так:
searchView = new SearchView()
$('div').append(searchView.render().el) # 'div' is just an example of course
Демо: http://jsfiddle.net/ambiguous/ubqqE/
Если вы хотите привязать к существующему HTML, вы можете использовать el
вместо tagName
и className
следующим образом:
SearchView = Backbone.View.extend
el: '#search'
#...
Демо: http://jsfiddle.net/ambiguous/FfDg6/