Ant*_*ell 8 javascript ember.js ember-data
我有一个非常常见的情况:有一个脏模型,如果用户试图转换到任何其他路线,我想显示确认.
我有这样的东西与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;
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
但是,如果我想使用异步确认(例如bootbox.js确认),我该如何停止转换?
我试图回来,Ember.RSVP.Promise但似乎willTransition不支持承诺.
所以问题是如何通过异步确认来防止转换到另一条路线?
您可以使用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);
}
Run Code Online (Sandbox Code Playgroud)
http://emberjs.jsbin.com/gefituqo/1/edit
| 归档时间: |
|
| 查看次数: |
1764 次 |
| 最近记录: |