Emberjs:停止并重试 willTransition 中的转换
Emberjs: stop and retry transitions in willTransition
当用户即将离开当前路线时,我想显示一个警告,让他在离开(并丢失更改)和留在当前路线之间做出选择。
为了捕获所有可能的转换,我需要在路由 willTransition
方法中执行此操作。
我正在尝试 abort()
然后 retry()
如果用户选择转换。但是 retry
似乎没有任何效果。需要注意的是,它是异步调用的。这是一个演示:https://ember-twiddle.com/b6d8ddb665ff79f2988277912916e77b?openFiles=routes.my-route.js%2C
这是我的路线示例路线:
import Ember from 'ember';
export default Ember.Route.extend({
actions: {
willTransition(transition) {
transition.abort();
Ember.run.later(function(){
console.log('Transition... now!');
transition.retry();
}, 2000);
return true;
}
}
});
日志出现了,但我从未被重定向到 application
路由。
当用户即将离开当前路线时,我想显示一个警告,让他在离开(并丢失更改)和留在当前路线之间做出选择。
对于上述需求,下面的代码就足够了。
willTransition(transition) {
if (!confirm('Are you sure to navigate ?')) {
transition.abort();
return false;
}
return true;
}
查看日志。您会看到 "Transition... now!" 每 2 秒出现一次。这表明 willTransition
一次又一次地工作。所以你需要一些标志让你离开。 Updated twiddle
当用户即将离开当前路线时,我想显示一个警告,让他在离开(并丢失更改)和留在当前路线之间做出选择。
为了捕获所有可能的转换,我需要在路由 willTransition
方法中执行此操作。
我正在尝试 abort()
然后 retry()
如果用户选择转换。但是 retry
似乎没有任何效果。需要注意的是,它是异步调用的。这是一个演示:https://ember-twiddle.com/b6d8ddb665ff79f2988277912916e77b?openFiles=routes.my-route.js%2C
这是我的路线示例路线:
import Ember from 'ember';
export default Ember.Route.extend({
actions: {
willTransition(transition) {
transition.abort();
Ember.run.later(function(){
console.log('Transition... now!');
transition.retry();
}, 2000);
return true;
}
}
});
日志出现了,但我从未被重定向到 application
路由。
当用户即将离开当前路线时,我想显示一个警告,让他在离开(并丢失更改)和留在当前路线之间做出选择。
对于上述需求,下面的代码就足够了。
willTransition(transition) {
if (!confirm('Are you sure to navigate ?')) {
transition.abort();
return false;
}
return true;
}
查看日志。您会看到 "Transition... now!" 每 2 秒出现一次。这表明 willTransition
一次又一次地工作。所以你需要一些标志让你离开。 Updated twiddle