骨干视图触发事件两次
Backbone View firing event twice
我有一个通过路由初始化的主干视图,但是当我导航到另一条路由并通过链接再次返回到前一条路由时,视图中的事件被触发了两次这是我的路由器
define(['underscore','backbone','views/projects/view_project',
'views/projects/project_tasks','views/projects/project_milestones',
'views/projects/project_tasklists','views/projects/project_documents'
],
function( _,Backbone,ProjectTasks,ProjectMilestones,
ProjectTasklists,ProjectDocuments) {
var ProjectRouter = Backbone.Router.extend({
initialize: function(projects) {
if(projects) {
this.projects = projects;
}
},
//url routes mapped to methods
routes: {
"project/:id":"get_project",
"project/:id/milestones":"get_project_milestones",
"project/:id/tasks":"get_project_tasks",
"project/:id/tasklists":"get_project_tasklists",
"project/:id/documents":"get_project_documents"
},
get_project: function(id) {
UberERP.UI.loadpage("#project-view");
var project_view = new ProjectView(this.projects,id);
},
get_project_tasks: function(id) {
UberERP.UI.loadpage("#project-tasks-view");
var project_tasks_view = new ProjectTasks(id,this.projects);
},
get_project_tasklists: function(id) {
UberERP.UI.loadpage("#project-tasklist-view");
var project_tasks_view = new ProjectTasklists(id,this.projects);
},
get_project_milestones: function(id) {
UberERP.UI.loadpage("#project-milestones-view");
var project_milestones_view = new ProjectMilestones(id,this.projects);
},
get_project_documents: function(id) {
UberERP.UI.loadpage("#project-documents-view");
var project_documents_view = new ProjectDocuments(id,this.projects);
}
});
return ProjectRouter;
});
和视图中的狙击手
events: {
"click input[name=task]":"select_task",
"click a.remove-icon":"remove_task",
"click td.view-task":"view_task",
"click #project-tasks-table .sort-by-status":"sort_by_status",
"click #project-tasks-table .group-filter-btn":"sort_by_task_list"
},
select_task: function( event ) {
var el = $(event.currentTarget);
row = el.parent('td').parent('tr');
console.log(el.val());
if(row.hasClass('active')) {
row.removeClass('active');
}
else {
row.addClass('active');
}
}
我在 select_task 方法中有一行记录单击的输入元素的值。最初调用视图时,它工作正常并记录到控制台。但是,在导航到另一条路由并返回后,单击时将记录输入元素的值两次。可能出了什么问题?
我认为你只是发现自己处于骨干幽灵视图问题的中间。
当您从一个路由移动到另一个路由时,请尝试删除并取消绑定所有视图。
相关文章:
- Jquery点击事件必须点击两次
- 一次点击,两次'单击'事件已启动
- 替换的超时事件触发两次或两次以上(有时)
- jquery on触发器按键事件两次
- 骨干视图触发事件两次
- animationEnd 事件处理程序 - 事件侦听两次
- 触发的事件被接收两次.如何找到鬼视图
- 服务器触发客户端事件两次
- `object:selected`事件触发两次
- 如何处理iframe中两次或根本不触发的IE11 localStorage事件
- 谷歌地图api v3 zoom_changed事件在fitBounds调用后激发了两次
- 为什么主干视图触发更改事件两次
- 如何防止在快速单击时两次调用en事件处理程序
- jQuery点击事件触发两次
- 为什么事件mouseenter在JavaScript中触发两次
- 在具有单击事件的 li 内时停止选中两次复选框
- 引导模式切换事件发生两次
- j查询点击事件触发两次
- 骨干模型触发“变化”.两次事件
- 在父元素具有相同事件函数的子元素上单独触发两次事件函数