主干.js每个视图触发的常见事件
backbone.js common event triggered for every view
我是主干网的新手,负责扩展和维护主干应用程序。
我遇到为每个加载的视图触发"注销"按钮的问题。我为常见视图事件创建了一个基类:
BaseView = Backbone.View.extend({
logout: function() {
console.log('logout');
},
events: {
'click .logout':'logout'
}
})
然后我在相关视图中继承了这一点
DashboardView = BaseView.extend({
el : '#app',
render: function(){
this.$el.html( _.template($('#Dashboard').html()) );
return this;
}
})
使用的模板具有按钮 <div class="logout"></div>
我正在处理的网站部分有四个视图,如果所有四个视图都已加载,则单击时注销会触发 4 次。
我已经尝试了几种方法来解决这个问题,例如在视图更改时取消绑定视图并设置元素但没有成功。
首先,这是我应该解决的问题吗?如果是这样,我该怎么做?
干杯
Backbone 使用 jquery 的on
来注册 DOM 事件。
实例化 4 个视图时,如果 4 个事件侦听器都定义了相同的父元素,则它们将绑定到同一元素。
就个人而言,如果我当前在需要身份验证的页面中,我倾向于使用 window.location.href
创建重定向。如果我在一个不需要身份验证的页面中,我只需重新呈现标题,用登录 (/register) 按钮替换用户名。
我想
我已经找到了解决方案。
在我现在调用的事件函数中this.undelegateEvents();
例如:
showview : function() {
this.undelegateEvents();
app.appRouter.navigate("/dashboard", true);
}
在应用程序中.js在应用程序路由器函数中,我调用this.DashboardView.delegateEvents();
:
app.appRouter.on('route:dashboard', function(){
app.dashboard = new DashboardView();
app.dashboard.render();
app.dashboard.delegateEvents();
)}
我很想知道这个解决方案是否有任何问题。
问候
相关文章:
- 分派点击事件并保留击键修饰符
- 模糊事件的Javascript测试
- keyup事件处理程序更改焦点不适用于快速键入
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 如何使Javascript动态html表及其上的事件
- 使用类从一个标记中双击事件
- 如何在未直接触发的情况下停止事件
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 对iPad上的点击事件反应缓慢
- 事件和状态
- Fancybox是否将Click事件静音
- 主干-不管怎样,检查事件以前是否绑定过
- 从控制器返回后Ajax启动事件激发
- 如何从画布上的某个移动事件中获取X和Y
- Jquery:未触发select事件
- JsFiddle上的鼠标事件不起作用
- 主干.js每个视图触发的常见事件
- Emberjs常见路由器事件
- 从RactiveJS组件中触发事件是一种常见的模式
- 处理常见JQuery事件处理模式的另一种方法