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
}
}