我想使用把手助手(component "component-name"...
或component-name
)将组件插入控制器模板而不是。或者通过插座中的控制器(或者只要解决方案适用于想要插入另一个组件的组件,那么它很好,我不认为插座可以在组件中工作)。
换句话说:
App.IndexController = Ember.Controller.extend({
actions: {
insertComponent: function() {
var component = this.container.lookup("component:my-inserted", { singleton: false });
component.set("layoutName", "components/my-inserted");
// to be like handlebars-inserted component, what do i do here?
}
}
});
您可以使用此测试:http://emberjs.jsbin.com/popozanare/4/edit?html,js,output
为什么?
考虑一种清晰模态语法的方法,例如" openModal" Ember Cookbook中描述的语法:http://guides.emberjs.com/v1.10.0/cookbook/user_interface_and_interaction/using_modal_dialogs/。
问题是源上下文丢失,因为模式在ApplicationRoute
内。我想在调用模态时使用相同的语法,但保持层次结构。您可以使用https://github.com/yapplabs/ember-modal-dialog来保持层次结构,这需要变量的映射...我也不喜欢(但如果我没有其他选择,可能会实现)。
TD; LR:想要在调用控制器/组件(映射变量等)的控制器/组件中打开调用的控制器/组件(上下文)中的模态而没有脚手架。
编辑:
第二个想法,使用容器视图可能比映射变量更清晰,在此解决方案中找到:http://jsbin.com/hahohi/1/edit?html,js,output。仍然需要脚手架。谢谢@ user3568719。
答案 0 :(得分:1)
这本食谱有点过时了,但是如果你正在寻找一种“干净”的方式来处理应用程序中的模态,我会建议指定的出口。
将其添加到您的应用程序或身份验证模板{{outlet "modal"}}
,当您想调出模态时,您可以捕获相应路径上的操作,然后像这样渲染到该命名插座:
this.render('your-desired-modal-template', {
into: 'auth',
outlet: 'modal'
});
如果您想解雇它,只需disconnectOutlet就像这样:
this.disconnectOutlet({
outlet: 'modal',
parentView: 'auth'
});
这是我们一直在努力的方式,我愿意接受建议/更好的方法。