Javascript 在ui路由器中保持onExit

Javascript 在ui路由器中保持onExit,javascript,css,angularjs,angular-ui-router,Javascript,Css,Angularjs,Angular Ui Router,我想在用户离开状态时在页面中的元素上显示动画。这就是我目前拥有的: { ....., views: { ... }, onExit: function(){ someEle.classList.remove("someClass"); //CSS transition } } 但是,一旦状态离开,退出状态的视图就会被破坏,并且没有动画。有没有办法在动画完成之前“暂停”状态的退出一段时间?使用上的click events查看这一新尝试 使用OP

我想在用户离开状态时在页面中的元素上显示动画。这就是我目前拥有的:

{
    .....,
    views: { ... },
    onExit: function(){
        someEle.classList.remove("someClass");   //CSS transition
    }
}

但是,一旦状态离开,退出状态的视图就会被破坏,并且没有动画。有没有办法在动画完成之前“暂停”状态的退出一段时间?

使用
上的click events查看这一新尝试

使用OP的代码(纯JS):
我不熟悉Angular JS,但是您是否尝试过捕获退出事件,并在
onExit
事件处理程序的开头使用
preventDefault()
阻止它触发,为css转换的持续时间设置超时,并在完成时再次发送事件?@Marventus-但如何恢复它?我认为
返回true应该可以做到这一点!导航器上的“后退”按钮不起作用。状态转换仍将发生。
var links = document.getElementsByTagName("a");
function onTransitionEnd(event) {
    window.location.href = event.target.href;
    // Uncomment line below to refire the event
    // event.target.dispatchEvent(event);
}
for(i=0; i<links.length; i++) {
    links[i].addEventListener("click", function(e) {
        this.addEventListener("transitionend", function() {
            // Uncomment lines below to refire the event
            /* delete e.defaultPrevented;
            e.defaultPrevented = false; */
            onTransitionEnd(e);
        });
        if( this.className.search(/animate/) > -1 )
            this.className = this.className.replace("animate", "");
        else
            this.className = this.className + " animate";
        e.preventDefault();
    });
}
function onTransitionEnd(event) {
    console.log(event);
    window.location.href = event.target.href;
}
$("a", this).on("click", function (e) {
    if ( $(this).hasClass("animate") )
        $(this).removeClass("animate");
    else
        $(this).addClass("animate");
    $("a").on("transitionend", function () {
        onTransitionEnd(e);
    });
    e.preventDefault();
});
function onTransitionEnd(event) {

    /* do stuff here */

    // Uncomment line below to refire the event
    // event.target.dispatchEvent(event);
}

{
    .....,
    views: { ... },
    onExit: function(e){
        someEle.addEventListener("transitionend", function() {
            // Uncomment lines below to be able refire the event on `transitionend`
            /* delete e.defaultPrevented;
            e.defaultPrevented = false; */
            onTransitionEnd(e);
        });
        someEle.classList.remove("someClass");   //CSS transition
    }
}