Javascript 如何在ember.js中重用/干燥这些路由
我有这些路线Javascript 如何在ember.js中重用/干燥这些路由,javascript,ember.js,routes,Javascript,Ember.js,Routes,我有这些路线 this.resource('politicians'); this.resource('politician', { path: '/politicians/:politician_id', function () { // Non nested interface so non nested politician route. this.resource('questions', function () { this.resource(
this.resource('politicians');
this.resource('politician', { path: '/politicians/:politician_id', function () {
// Non nested interface so non nested politician route.
this.resource('questions', function () {
this.resource('question', { path: ':question_id' });
});
});
this.resource('questions', function () {
this.resource('question', { path: ':question_id' });
});
我希望问题路径可以在应用程序中的任何位置呈现(使用模式),而不会丢失当前上下文,但每个问题仍然有一个特定/唯一的url,因为知道从嵌套问题路径和非嵌套问题路径得到的问题是相同的
this.resource('question', { path: ':question_id' });
问题是,我不想为这做一个自定义的出口,因为这样我就没有每个问题的url。你要找的是Ember的
{{render}
助手。只需将{{render'question'questionModel}}
放在您希望使用的模式中即可
您可以了解渲染辅助对象
编辑:
下面是一个jsbin,展示了如何以这种方式使用呈现标记的基本思想。这个jsbin以两种不同的方式呈现相同的模板;一次绑定到路由url,一次使用渲染辅助程序
这类问题最好通过使用查询参数并基于参数连接模型来解决。如果您不想这样做,那么如果您希望每条路线都基于URL,那么您就必须将问题构建到每条路线中
下面是一个示例:我还没有设法使查询参数工作^^。您会有一个带有查询参数和modals的jsbin吗?当然,上面添加了一个示例。它假设问题总是呈现的,并且不会是基于URL的而不是基于URL的。您仍然可以通过url直接访问路由。这不是我们所要求的吗?Kingpin和我似乎对你的问题有不同的解释:你是否在寻找一种在每个url中引用“模式打开/关闭”的方式(Kingpin的答案)?或者,您是否正在寻找一种在模式中打开路由而不更改url的方法(我的答案)?