Events 余烬中的事件冒泡/捕获/委派
很难解释实际的代码,因为我不知道问题出在哪里,但如果有人能帮助解释事件是如何被删除/冒泡进入Events 余烬中的事件冒泡/捕获/委派,events,event-handling,ember.js,delegation,Events,Event Handling,Ember.js,Delegation,很难解释实际的代码,因为我不知道问题出在哪里,但如果有人能帮助解释事件是如何被删除/冒泡进入Ember,那就太好了 我有一个例子,在视图中,文档上的鼠标移动。当使用outlets动态插入视图时,会发生这种情况 鼠标移动绑定代码: MOVE_EVENT = touch ? 'touchmove' : 'mousemove', $(document).on(MOVE_EVENT, function (e) { console.log('move event move=tru
Ember
,那就太好了
我有一个例子,在视图中,文档
上的鼠标移动
。当使用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);
}
});
skiptimes插入到RepeatView
上的oulet中。在这种状态更改之后,重复视图
中的鼠标移动不会被触发,或者不会触发文档
上的鼠标移动在我将鼠标移到父视图区域之外的同时(RepatView
),然后鼠标移动显示日志。
简而言之,视图中的鼠标移动不会被触发。我已提出:
mouseMove : function(e){
console.log('Mouse Move in Blah Blah View');
}
在RepeatView
中的每个视图中,包括RepeatView
,都不会触发任何事件。但当显示日志时,会触发鼠标在RepeatView
的父级上移动并向上移动
很难在实际代码中解释,因为我不知道问题出在哪里,但如果有人能帮助解释事件是如何在Ember中被删除/冒泡的,那就太好了
更新
经过进一步调查,似乎是以下在余烬最新的stopPropogation导致了这一点,还不能理解为什么它会去其他地方
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;
});
您能否提供一个最小的JSFIDLE来重现这种情况?
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;
});