Ember.js 如何清空余烬中的指定出口?

Ember.js 如何清空余烬中的指定出口?,ember.js,modal-dialog,ember-router,outlet,Ember.js,Modal Dialog,Ember Router,Outlet,我的应用程序模板中有一个命名的outlet,我只用于模式(弹出)视图。默认情况下,我希望这是一个空的,未使用的插座,因为只有约5%的路线将涉及模式显示。对于那些特定的模式路由,我将从嵌套较深的子路由插入模式模板,例如 App.NeeplyNestedModalChildRoute = Ember.Route.extend({ renderTemplate: function() { this.render({ into: 'application',

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

App.NeeplyNestedModalChildRoute = Ember.Route.extend({
  renderTemplate: function() {        
    this.render({
      into: 'application',
      outlet: 'modal'
    });
  }
});
我遇到的问题是,我希望“关闭模式框”涉及到转换到一个不同的、非模式的、嵌套较少的路径。我正在成功地过渡到正确的路线,但我不知道如何清除模式出口。我如何强制模式出口清除所有非模式路线



我在上对这个用例发表了评论。似乎已经有了你想要做的事情的功能,至少部分是这样。离开路线时可以使用挂钩。我想,这样你就可以清理出口了


也许您可以创建一个空模板,将其渲染到outlet中。然后,当调用deactivate钩子时,只需将空模板渲染到outlet中。在它们关闭之前,这应该一直有效。

我在上对这个用例进行了评论。似乎已经有了你想要做的事情的功能,至少部分是这样。离开路线时可以使用挂钩。我想,这样你就可以清理出口了


也许您可以创建一个空模板,将其渲染到outlet中。然后,当调用deactivate钩子时,只需将空模板渲染到outlet中。在它们关闭之前,这应该一直有效。

我正在使用以下代码的变体来清除我的模式
出口

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

请参阅余烬讨论板上@teddyzeeny的完整代码:

我正在使用以下代码的变体来清除我的模式
出口

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

在Ember讨论板上查看@teddyzeeny的完整代码,这里:

找到了一个解决方案,即创建一个“空”模板,并将其呈现到所有非模态路由的模态出口中。这似乎有效,但感觉像是一个真正的黑客。还包括“清空”所有非交通方式路线的交通方式出口。(而且有很多)我想这是一个可行的解决方案,但是有没有一种干净的方法可以让插入“空”模板成为所有非模态路由的默认行为?看起来“清除”出口有一个开放的问题:我明白了,我想既然这个问题被标记为一种改进,你最好坚持你的实际解决方案。。。抱歉,我帮不上忙:/我遇到了一个解决方案,那就是创建一个“空”模板,并将其呈现到所有非模式路由的模式插座中。这似乎有效,但感觉像是一个真正的黑客。还包括“清空”所有非交通方式路线的交通方式出口。(而且有很多)我想这是一个可行的解决方案,但是有没有一种干净的方法可以让插入“空”模板成为所有非模态路由的默认行为?看起来“清除”出口有一个开放的问题:我明白了,我想既然这个问题被标记为一种改进,你最好坚持你的实际解决方案。。。对不起,我帮不上忙:/