Ember.js pre4,如何做以前的pre2 connectOutlet的东西

Fla*_*pes 5 ember.js ember-router

在pre2中,假设我在路由器外部有这个应用程序代码:

  var controller = App.MyController.create();
  controller.content = [...];

  App.get('router').get('applicationController').connectOutlet({
    outletName: 'modal',
    controller: controller,
    viewClass: App.MyView,
    context: controller
  });
Run Code Online (Sandbox Code Playgroud)

也就是说,我用我的数据填充了一个名为'modal'的插座,添加到'application'模板中.

现在,在pre4中我没有引用路由器创建的控制器.你如何从路由器外部填充插座?

我可以要求路由器进行转换,但我不想修改URL,因为我只是打开当前内容的模式.

编辑:

通过从App.Router.router对象中查找应用程序视图,这就是我提出的临时解决方案..显然这是一个肮脏的黑客,任何人都知道在pre4中做到最好和正确的方法吗?

  var controller = App.MyController.create();
  controller.content = this.get('content');

  var theView = App.MyView.create();
  theView.set('controller', controller);

  App.Router.router.currentHandlerInfos[0].handler.router._activeViews.application[0].connectOutlet('modal', theView);
Run Code Online (Sandbox Code Playgroud)

Tom*_*Key 2

如果您只需要将视图添加到应用程序中,您可以在这个问题中使用我的解决方案:

使用 Ember 路由器 v2 进入和退出模态状态的正确方法是什么?

但是,如果您需要将其添加为出口,则可以通过向路由器发送事件并在事件中渲染它,而不将其转换到另一个路由来完成。

events: {
    showModal: function(){
        this.render('modal', {into: 'index', outlet: 'modalOutlet', controller = this.controllerFor('modal')}); 
    }
}
Run Code Online (Sandbox Code Playgroud)

请参阅小提琴示例:

http://jsfiddle.net/Energiz0r/gChWa/1