Raj*_*jat 2 ember.js ember-router
所以我想弄清楚如何最好地在路线上放置模态,这样你就可以通过网址导航到它们.
application.hbs
{{outlet}}
{{outlet modal}}
Run Code Online (Sandbox Code Playgroud)
有一个讨论,在这里和emberjs食谱提供了另一个例子,但没有涵盖了你怎么能有一个特定的路线上情态动词.
我所看到的最接近的是Stack Overflow这个问题,但它有两个问题:
这是我觉得解决方案存在但不确定究竟是什么的地方:
App.MyModalRoute = Ember.Route.extend({
Run Code Online (Sandbox Code Playgroud)renderTemplate: function(controller, model) { /** * When my modal route is visited, render it in the outlet * called 'modal' but somehow also persist the default outlet. **/ this.render({ outlet: 'modal' }); }});
以下是我们处理它的方式:
在路线中,您使用类似于您描述的渲染片:
App.UserDeleteRoute = Ember.Route.extend({
renderTemplate: function() {
this.render({
into: 'application',
outlet: 'modal'
});
},
actions: {
closeModel: function() {
this.transitionTo('users.index');
}
},
deactivate: function() {
this.render('empty', {
into: 'application',
outlet: 'modal'
});
}
}
Run Code Online (Sandbox Code Playgroud)
清除"停用"挂钩上的插座是重要的一步.
对于主模板,您只需要:
{{outlet}}
{{outlet "modal"}}
Run Code Online (Sandbox Code Playgroud)
这不会覆盖默认插座.
您可能想要为所有模态做的一件事是实现布局:
App.UserDeleteView = Ember.View.extend({
layoutName: 'settings/modals/layout',
templateName: 'settings/modals/user_delete'
});
Run Code Online (Sandbox Code Playgroud)
另一个问题是需要将父路线渲染到主插座中.如果该出口中的任何东西不是您的模态的父母,那么远离该路线的行为将把它从出口移除.