Я начал изучать Backbone.js Views
, для моей практической цели я попробовал следующий код.
<body>
<div id="search_container"></div>
<input type="text" id="field"/>
<script type="text/javascript">
SearchView = Backbone.View.extend({
initialize: function(){
this.render();
},
render: function(){
//var template = _.template( $("#search_template").html(), {data:'ggg'} );
console.log(this.$el.attributes);
$('#search_container').html(this.$el);
},
events: {
"click #field": "doSearch"
},
doSearch: function( event ){
console.log('ssss');
alert('working!!');
}
});
var search_view = new SearchView({el:"#field"});
</script>
</body>
Если вы наблюдаете мой код, я добавил текстовое поле в div
.it работает отлично. Если вы нажмете на textField
он не вызывает doSearch()
.
Как я могу это исправить.
То, что вы сделали, - это сокращенная форма делегатов. Этот метод использует jQuery.on под капотом, и ваш селектор будет фильтровать потомков текущего вида el
, см. Backbone delegateEvents
:
this.$el.on(eventName, selector, method);
Смотрите эту скрипку:
Проблема здесь в #field не внутри, а в представлении $ el. Чтобы он работал, измените хэш
events: {
"click": "doSearch"
}
field
и находится внутриthis.$el
? может быть, вы могли бы показать нам сгенерированный HTML :)