Events backbone.js-mouseover终止视图上的事件
这是一个简单的todo应用程序,目前仅列出ul集合视图中的几个li视图。我试图使click事件触发一个简单的showAlert函数 如果我将鼠标停留在其中一个任务视图(li)上并刷新页面,使鼠标在重新加载后悬停在该特定li上,则单击事件将触发showAlert功能 问题是,一旦我移动鼠标(很可能触发鼠标悬停事件),我将丢失所有任务视图(li)上的单击事件,包括我最初悬停的视图 根据我能找到的所有与此问题密切相关的帖子,我尝试在不同的地方使用这个.delegateEvents(),但没有成功 前面的代码Events backbone.js-mouseover终止视图上的事件,events,backbone.js,views,mouseover,Events,Backbone.js,Views,Mouseover,这是一个简单的todo应用程序,目前仅列出ul集合视图中的几个li视图。我试图使click事件触发一个简单的showAlert函数 如果我将鼠标停留在其中一个任务视图(li)上并刷新页面,使鼠标在重新加载后悬停在该特定li上,则单击事件将触发showAlert功能 问题是,一旦我移动鼠标(很可能触发鼠标悬停事件),我将丢失所有任务视图(li)上的单击事件,包括我最初悬停的视图 根据我能找到的所有与此问题密切相关的帖子,我尝试在不同的地方使用这个.delegateEvents(),但没有成功 前面
(function() {
window.App = {
Models: {},
Collections: {},
Views: {}
};
window.template = function(id) {
return _.template( $('#' + id).html() );
};
App.Models.Task = Backbone.Model.extend({});
App.Collections.Tasks = Backbone.Collection.extend({
model: App.Models.Task
});
App.Views.Tasks = Backbone.View.extend({
tagName: 'ul',
render: function() {
this.collection.each(this.addOne, this);
return this;
},
addOne: function(task) {
var taskView = new App.Views.Task({ model: task });
this.$el.append(taskView.render().el);
}
});
var tasksCollection = new App.Collections.Tasks([
{
title: 'Task 1',
priority: 3
},
{
title: 'Task 2',
priority: 4
},
{
title: 'Task 3',
priority: 5
}
]);
var tasksView = new App.Views.Tasks({ collection: tasksCollection });
$('.tasks').html(tasksView.render().el);
})();
这是有争议的观点
App.Views.Task = Backbone.View.extend({
tagName: 'li',
events: {
'click': 'showAlert'
},
showAlert: function() {
alert('yes!');
},
render: function() {
this.$el.html( this.model.get('title') );
return this;
}
});
程序代码
(function() {
window.App = {
Models: {},
Collections: {},
Views: {}
};
window.template = function(id) {
return _.template( $('#' + id).html() );
};
App.Models.Task = Backbone.Model.extend({});
App.Collections.Tasks = Backbone.Collection.extend({
model: App.Models.Task
});
App.Views.Tasks = Backbone.View.extend({
tagName: 'ul',
render: function() {
this.collection.each(this.addOne, this);
return this;
},
addOne: function(task) {
var taskView = new App.Views.Task({ model: task });
this.$el.append(taskView.render().el);
}
});
var tasksCollection = new App.Collections.Tasks([
{
title: 'Task 1',
priority: 3
},
{
title: 'Task 2',
priority: 4
},
{
title: 'Task 3',
priority: 5
}
]);
var tasksView = new App.Views.Tasks({ collection: tasksCollection });
$('.tasks').html(tasksView.render().el);
})();
似乎工作得很好,谢谢Jack,我将我的主干脚本src链接到了您列出的src,它工作了,然后我恢复到我的本地开发版本,它工作了吗?非常奇怪,但谢谢你没问题,因为问题似乎无法重现,我将投票结束。