gpt4 book ai didi

javascript - Ember.js:如何通过异步确认来防止脏模型上的转换?

转载 作者:数据小太阳 更新时间:2023-10-29 04:12:44 25 4
gpt4 key购买 nike

我有一个很常见的情况:有一个脏模型,如果用户尝试转换到任何其他路线,我想显示确认信息。

我有这样的东西可以与 window.confirm 确认对话框一起使用:

var EventRoute = Ember.Route.extend({
actions: {
willTransition: function(transition) {
var event = this.modelFor(this.routeName);
if (event.get('isDirty') && !confirm("Are you sure?")) {
transition.abort();
} else {
event.rollback();
return true;
}
}
}
});

但是如果我想使用异步确认(例如bootbox.js确认),我该如何停止转换呢?

我已经尝试返回 Ember.RSVP.Promise 但似乎 willTransition 不支持 promise 。

所以问题是如何通过异步确认来防止转换到另一个路由?

最佳答案

您可以使用 abort 取消/暂停转换,然后使用相同的转换实例调用 retry 再次尝试转换。

在包含的示例中,我停止了转换,然后在一秒钟后再次启动它。您可以启动确认对话框,并在单击确定/取消后使用过渡对象继续过渡。

willTransition: function(transition){
var self = this;
if(!this.get('allowTransition')){
console.log('transition abort');
transition.abort();

Em.run.later(function(){
self.set('allowTransition', true);
console.log('transition retry');
transition.retry();
}, 1000);
}

http://emberjs.jsbin.com/gefituqo/1/edit

关于javascript - Ember.js:如何通过异步确认来防止脏模型上的转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23723981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com