Я следил за многочисленными снимками экрана, а также многократно просматривал основную документацию, и я не могу понять, почему события моего представления не запускаются.Мой (короткий) код для тестирования выглядит следующим образом:
<script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="js/underscore.min.js"></script>
<script type="text/javascript" src="js/backbone.min.js"></script>
<script type="text/javascript">
var App = (function($){
var NavigationItemView = Backbone.View.extend({
el: '#navigation',
initialize: function(params){
this.label = params.label;
this.appendTo = params.appendTo;
},
events: {
"click #add" : "test"
},
test: function(){
$(this.el).html("<li>Testing...</li>");
},
render: function(){
$(this.el).html("<li><a href=\"#\">"+this.label+"</a></li>");
}
})
var self = {};
self.init = function(){
new NavigationItemView({ label: 'Test Nav Label' });
}
return self;
});
$(document).ready(function(){
App(jQuery).init();
})
</script>
Если я изменю код метода init из этого:
new NavigationItemView({ label: 'Test Nav Label' })
На это:
new NavigationItemView({ label: 'Test Nav Label' }).render()
Метод рендеринга вызывается идеально, указывая на то, что нет никаких проблем с настройкой представления.Я могу заменить render () на test (), и он тоже работает.
Однако событие нажатия на ссылку с идентификатором #add не запускает даже тест, и, конечно же, должно?Чтобы уточнить, у меня есть ссылка с идентификатором «добавить» в DOM, я проверил и проверил еще раз.
Если я добавляю перехватчики событий с помощью jQuery и вручную запускаю определенные методы представления, это работает.Это магистрали собственных событий, которые у меня не работают.
Я просмотрел соответствующие посты, и большинство предложений касалось использования свойства el , которое есть у меня.#navigation - пустое место в моем случае.Я изменил его на div, но без изменений в поведении.
Вся помощь очень ценится.