Ember:document.getElementById('foo')。addEventListener的等价物

时间:2013-12-12 20:23:51

标签: ember.js

我需要向webkitTransitionEnd中的DOM元素之一添加EmberView事件监听器。

这个javascript(DOM)等价物是:

function transitionEnded() {
    console.log("transition ended");
}

document.getElementById('foo').addEventListener(
    "webkitTransitionEnd", 
    this.transitionEnded, 
    true);

我尝试了以下内容:

var MessageView = Ember.View.extend({
    ...
    transitionEnded: function() {
        console.log("Transition Alert!");
    }, 

    actions: {
        closeMessageWithTransition: function(){
            var elem = document.getElementById('transitionThis');
            elem.addEventListener(
                 "webkitTransitionEnd", this.transitionEnded, true);
            // Trigger the transition here
        }
    ...

我也尝试过使用:

this.$("#transitionThis").get(0).addEventListener(...);

而不是使用:

var elem = document.getElementById('transitionThis');
elem.addEventListener(...);

但无济于事。转换发生了,但我没有得到任何事件,也没有在控制台中看到错误。

我可以确认document.getElementById方法选择了正确的元素。那么,我的事件处理程序在哪里?


编辑1 :没有意识到有一个emberjs.jsbin.com。那么,你走了:

Emberjs.jsbin

PS:我确实意识到我正在附加一个监听器的元素最终会在transitionTo('messages')中被销毁,但我已经注释掉了这一点但仍然没有效果。


编辑2 :我添加了另一种方法,尝试使用Ember.View文档中概述的EventManager来捕获事件。

Alternate Method

1 个答案:

答案 0 :(得分:0)

看起来它正在使用动画,而不是过渡,webkitAnimationEnd是合适的钩子。

http://emberjs.jsbin.com/awEWUfOd/4/edit