我无法让按钮单击事件在主干中注册。我在它之前列出的事件(输入中的按键)工作正常。
这是我的观点:
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>
您可以看到我实际上并没有将任何内容传递到此模板中,但我仍想使用模板,因为我将根据用户正在处理的内容向页面添加和删除此“添加表单”视图。
输入上的按键有效。点击它旁边的按钮,没有!我什至尝试在我的渲染函数中添加 this.delegateEvents() ,但我似乎没有做任何事情来让按钮工作。我觉得它必须是我只是想念的相对简单的东西!有什么帮助吗?谢谢!