如何使用Backbone-Views检测窗口事件?
How can I detect window events using Backbone-Views?
这是我第一次尝试。我只是想检测窗口上的keyup和keydown事件。当我使用addEventListener时,这是有效的,但我正在转向jQuery/Backbone框架。
这里是有问题的模块。我已经确认事件回调没有触发。
var UserTryView = Backbone.View.extend({
Name: 'UserTry',
keys: {},
events: {
"keyup window" : "keyup",
"keydown window" : "keydown"
},
keydown: function (e) {
console.log('keydown detected');
var self = this;
this.keys[e.keyCode] = null;
$A.testKeys(this.keys, '1684', function () {
self.render();
});
},
keyup: function (e) {
delete this.keys[e.keyCode];
},
render: function () {
new FavoritesView({el: $A.el('#mm')});
new FeedView({el: $A.el('#at_view')});
new AccountView();
// Storage.setObj(packet.server.smalls);
Page.flip('main');
}
});
var user_try_view = new UserTryView();
事件散列将只查看元素本身或子元素。这与视图的架构是内联的——你通常避免查找你的视图树(如果你正在使用子视图的概念,我希望你是/将)。
要监听一个窗口事件,你应该用普通的jQuery方式钩入它,即:
initialize: function() {
_.bindAll(this, 'onWindowKeyUp', 'onWindowKeyDown');
$(window).on({
'keyup': this.onWindowKeyUp,
'keydown': this.onWindowKeyDown
});
},
onWindowKeyUp: function(ev) {
console.log('Key up:', ev)
},
onWindowKeyDown: function(ev) {
console.log('Key down:', ev)
}
注意_.bindAll
。这是可选的,但这意味着在这些事件回调中,this
引用的视图通常比jQuery提供给你的上下文更有用。
注:请记住在视图被销毁时删除该事件,以防止内存泄漏。
相关文章:
- 召回窗口加载事件 - javascript
- node-webkit-从父窗口捕获iframe鼠标事件
- 正在尝试处理子窗口上的关闭窗口事件
- 窗口大小调整事件在ie7中持续触发
- 为什么不'我的窗口滚动事件根本没有启动.其他答案没有解决问题
- 如何在Ol3弹出窗口中添加用javascript创建的按钮上的点击事件
- 点击AngularJS模态窗口捕捉背景事件
- 检测window.opener窗口刷新事件
- 我可以在FullCalendar中设置事件ClickLimit弹出窗口的样式吗
- 如何在事件函数中访问窗口实例
- 信息窗口谷歌地图点击事件给出错误
- 从父级触发弹出窗口中的事件
- 如何在窗口更改时触发事件
- 剑道窗口还原在最小化然后还原时不调用调整大小事件
- 销毁窗口.重新调整事件订阅服务器的大小
- AngularJS窗口滚动事件未触发
- 控制窗口.obeforeunload事件
- 如何跨窗口传递事件,可能
- 在聊天窗口中检测链接单击事件
- 保留动态创建的下拉列表's在事件窗口.history.back()上选择的值-JavaScript