Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在ember.js中重用/干燥这些路由_Javascript_Ember.js_Routes - Fatal编程技术网

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的方法(我的答案)?