在事件中冒泡/捕获/委派事件

时间:2012-07-27 00:13:02

标签: events event-handling ember.js delegation

很难说明实际的代码,因为我不知道问题出在哪里,但如果有人可以帮助解释如何在Ember中委托/冒充事件,那将会很棒。

我遇到mouse move document view未在view内触发的情况。使用outlets动态插入 MOVE_EVENT = touch ? 'touchmove' : 'mousemove', $(document).on(MOVE_EVENT, function (e) { console.log('move event move=true'); if (move) { e.preventDefault(); stop = getY(e); //console.log('move event move=true'); var val = pos + (start - stop) / h; val = val > (max + 1) ? (max + 1) : val; val = val < (min - 1) ? (min - 1) : val; inst.scroll(target, val); } }); 时会发生这种情况。

MOUSE MOVE BINDING CODE:

mouse move in repeat view
move event move=true
mouse move in repeat view
move event move=true
STATEMANAGER: Sending event 'chooseSkipTime' to state root.ote.
STATEMANAGER: Entering null
STATEMANAGER: Entering root
STATEMANAGER: Entering root.ote
STATEMANAGER: Entering root.ote.repeat
STATEMANAGER: Entering root.ote.repeat.skiptimes
STATEMANAGER: Entering root.ote.repeat.skiptimes.index
skiptimes view Inserted

如果我使用默认情况下在插座中显示视图的路由器URL加载页面,则鼠标在视图内移动会触发正文上的mousemove。当我通过改变状态进入视图时它不会发生:这是一个导致行为的状态变化的日志。

RepeatView

将跳过时间插入repeat view上的oulet。在这样的状态更改之后,document内的鼠标移动没有被触发,或者它没有触发RepatView上的鼠标移动。 与此同时,当我将鼠标移到父视图区域(mouseMove : function(e){ console.log('Mouse Move in Blah Blah View'); } )之外时,鼠标移动会显示日志。

简而言之,不会触发视图内的鼠标移动。我已经把:

RepeatView

RepeatView内的每个视图中,包括RepeatView,无触发器。但是鼠标移动到 setupHandler: function(rootElement, event, eventName) { var self = this; rootElement.delegate('.ember-view', event + '.ember', function(evt, triggeringManager) { var view = Ember.View.views[this.id], result = true, manager = null; manager = self._findNearestEventManager(view,eventName); if (manager && manager !== triggeringManager) { result = self._dispatchEvent(manager, evt, eventName, view); } else if (view) { result = self._bubbleEvent(view,evt,eventName); } else { //evt.stopPropagation(); } return result; }); 的父级,并且在显示日志时向上触发。

很难说明实际的代码,因为我不知道问题出在哪里,但如果有人能帮助解释事件是如何在Ember中委托/冒泡的话,那将会很棒。

更新

经过进一步的调查后,看起来ember-latest中的以下stopPropogation导致了这种情况,但还不能理解为什么会这样做。

{{1}}

0 个答案:

没有答案