У меня возникли проблемы с регистрацией события нажатия кнопки в магистрали. Событие, которое я перечислил прямо перед ним (нажатие клавиши при вводе), работает нормально.
Вот мой взгляд:
App.Views.TaskAddForm = Backbone.View.extend({
tagName: 'div',
initialize: function(){
},
events: {
'keypress #newTask': 'createNewTask',
'click #newTaskBtn': 'createNewTask',
},
template: App.Templates.TaskAddForm,
render: function(){
this.$el.html(this.template());
this.$el.attr('id','taskAddForm');
if (!this.newTask){
this.newTask = this.$('#newTask');
this.newPriority = this.$('#newPriority');
}
return this;
},
createNewTask: function(e){
if (e.keyCode !== 13) {
return;
}
var task = this.newTask.val();
var priority = this.newPriority.val();
if ($.trim(task).length > 0){
this.collection.add({name: task, priority: priority});
}
this.clearForm();
},
clearForm: function(){
this.newTask.val('');
this.newPriority.val(1);
}
});
Вот мой шаблон:
<h2>Add Task</h2>
<div class="input-append">
<select id="newPriority" class="input-medium" style="margin-right: 20px;">
<option value="1">Now</option>
<option value="2">Today</option>
<option value="3">Tomorrow</option>
<option value="4">Sooner</option>
<option value="5">Later</option>
</select>
<input type="text" id="newTask" placeholder="New Task" class="input-xxlarge">
<button class="btn" type="button" id="newTaskBtn">Add Task</button>
</div>
You can see I'm not actually passing anything into this template, but I wanted to still use a template because I will be adding and removing this Add Form view to the page depending on what the user is working on.
Клавиатура на ввод работает. Щелчок по кнопке рядом с ним - нет! Я даже пытался добавить this.delegateEvents() в свою функцию рендеринга, но ничего из того, что я делаю, не заставляет кнопку работать. Я чувствую, что это должно быть что-то относительно простое, чего мне просто не хватает! Любая помощь? Спасибо!