在ember.js中捕获mouseMove事件

时间:2013-03-22 12:30:21

标签: events ember.js capture mousemove

我正在尝试在ember.js中实现一个滑块视图;为此我需要捕获mouseMove事件,即使它离开了第一次收到它的视图。在纯粹的js中我会做这样的事情:

element.addEventListener 'mousemove', ..., true   // true means 'capture event'

即使鼠标离开浏览器窗口,也可以在捕获元素上触发事件,这样做会产生很好的副作用,模仿UI控件在本机应用程序中的行为方式。

我似乎无法在ember.js中找到一种方法,但我确定我忽略了一些东西。如果没有,那么推荐的做法是什么?

2 个答案:

答案 0 :(得分:2)

不幸的是,处理根元素(通常是EventDispatcher)上的默认事件处理程序的body对于将mouseMove范围设置为除了onDrag以外的视图没有做任何事情。实际发生的事情。

您可以查看onDragStartonDragEnddragStartdragdragEndbody中的ember用语“事件spec应该在源元素上触发,因此无论它们发生在何处都会触发您的视图。

您可以自己手动将处理程序分配给mouseUp。在mouseMove处理程序中添加mouseLeavemouseEnter处理程序,并在mouseUp(以防止重复)和on处理程序中删除它们。

最简单的方法是使用$('body').on('mouseMove.custom', $.proxy(this.yourHandler, this));

$('body').off('mouseMove.custom')

然后删除:

{{1}}

答案 1 :(得分:1)

查看旧问题的人的更新。现在,组件包含mouseMove和其他内置事件处理程序,以及添加自定义事件处理程序的能力。

https://guides.emberjs.com/v2.12.0/components/handling-events/

import Ember from 'ember';

export default Ember.Component.extend({
    mouseMove() {
        //do stuff
    }
});