我正在尝试通过应用程序路由渲染我的所有模态,但是在解除模态后我无法确定返回先前状态的正确方法。
以下是基本设置:
我的应用程序模板中有一个插座,我用它来显示模态对话框。
它看起来像:
{{ outlet modal }}
在我的路由映射中,我已经为各个模态定义了钩子。例如,我的帮助对话框弹出:
App.HelpRoute = Ember.Route.extend({
renderTemplate: function(controller, model) {
this.render({ outlet: 'modal' });
}
});
现在,我可以通过uri显示我的模态:
foo.com/#/help
我有一个使用jQuery解除模态的钩子:
$('#modalHelpWindow').modal('hide');
但这并没有多大帮助,因为我只是隐藏了元素。我需要在解雇时更新URI。如果我再次点击相同的路线,模态已经隐藏,并且不显示。
我应该使用哪些方法来关闭模态,并将应用程序路由回其先前的状态?我应该只使用history.back()?
请注意,我知道这个问题,但解决方案并不是首选的“ember”方式,因为以编程方式创建的视图不会使其控制器正确关联What's the right way to enter and exit modal states with Ember router v2?
答案 0 :(得分:2)
看起来我可以挂钩隐藏的处理程序,在我的视图的didInsertElement方法中执行history.back()调用,la:
didInsertElement: function() {
var $me = this.$();
$me.modal({backdrop:"static"});
$me.on('hidden', function() {
history.back();
});
},