我正在尝试通过应用程序路由渲染所有模态,但在关闭模态后我无法找出返回到先前状态的正确方法。
这是基本设置:
我的应用程序模板中有一个 socket ,用于显示模式对话框。
它看起来像:
{{ outlet modal }}
在我的路线映射中,我为各个模式定义了 Hook 。例如,我的帮助对话框弹出:
App.HelpRoute = Ember.Route.extend({
renderTemplate: function(controller, model) {
this.render({ outlet: 'modal' });
}
});
现在,我可以通过 uri 显示我的模态:
foo.com/#/help
我有一个钩子(Hook)可以使用 jQuery 关闭模式:
$('#modalHelpWindow').modal('hide');
但这并没有真正的帮助,因为我只是隐藏了该元素。我需要在解雇时更新 URI。如果我再次点击相同的路线,模式已经隐藏,并且不会显示。
我应该使用什么方法来关闭模式,并将应用程序路由回其之前的状态?我应该只使用history.back()吗?
注意,我知道这个问题,但解决方案不是首选的“ Ember ”做事方式,因为以编程方式创建的 View 不会使其 Controller 正确关联 What's the right way to enter and exit modal states with Ember router v2?
最佳答案
看起来我可以连接隐藏的处理程序来在我的 View 的 didInsertElement 方法中执行 History.back() 调用,如下:
didInsertElement: function() {
var $me = this.$();
$me.modal({backdrop:"static"});
$me.on('hidden', function() {
history.back();
});
},
关于ember.js v1.0.0-rc.1 -- 使用模式导出,如何在关闭时路由出模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15283388/