很难说明实际的代码,因为我不知道问题出在哪里,但如果有人可以帮助解释如何在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}}