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)
如果您只需要将视图添加到应用程序中,您可以在这个问题中使用我的解决方案:
使用 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
| 归档时间: |
|
| 查看次数: |
1329 次 |
| 最近记录: |