ember.js v1.0.0-rc.1 - 使用模态插座,如何在关闭时路由出模态?

时间:2013-03-07 22:52:25

标签: ember.js modal-dialog outlet

我正在尝试通过应用程序路由渲染我的所有模态,但是在解除模态后我无法确定返回先前状态的正确方法。

以下是基本设置:

我的应用程序模板中有一个插座,我用它来显示模态对话框。

它看起来像:

{{ 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?

1 个答案:

答案 0 :(得分:2)

看起来我可以挂钩隐藏的处理程序,在我的视图的didInsertElement方法中执行history.back()调用,la:

   didInsertElement: function() {
        var $me = this.$();
        $me.modal({backdrop:"static"});
        $me.on('hidden', function() {
            history.back();
        });
    },