如何清空Ember中的指定插座?

时间:2013-06-16 21:45:35

标签: ember.js modal-dialog ember-router outlet

我的应用程序模板中有一个命名插座,我只用于模态(弹出)视图。默认情况下,我希望这是一个空的,未使用的插座,因为只有约5%的路线会涉及模态显示。对于那些特定的模态路线,我从深层嵌套的子路径插入模态模板,例如

App.NeeplyNestedModalChildRoute = Ember.Route.extend({
  renderTemplate: function() {        
    this.render({
      into: 'application',
      outlet: 'modal'
    });
  }
});

我遇到的问题是我想要关闭模式框'涉及过渡到不同的,非模态的,不太深度嵌套的路线。我已成功转换到正确的路线,但我无法弄清楚如何清除模态插座。如何强制模态出口清除所有非模态路线?


2 个答案:

答案 0 :(得分:1)

我在issue @intuitive pixel was talking about上评论了这个用例。看来你已经尝试过的功能已经存在,至少在某种程度上是这样。离开路线时可以使用deactivate挂钩。在那你可以清除出口,我想。

也许你可以创建一个渲染到插座的空模板。然后,当调用deactivate hook时,只需将空模板渲染到插座中。这应该现在有效,直到他们关闭the issue

答案 1 :(得分:0)

我正在使用以下代码的变体来清除我的模态outlet

clearOutlet: function (container, outlet) {
    var parentView = this.router._lookupActiveView(container);
    parentView.disconnectOutlet(outlet);
  }

在Ember讨论区查看@teddyzeeny的完整代码,在这里:http://discuss.emberjs.com/t/modal-views-can-we-agree-on-a-best-practice/707/2