【问题标题】:How can I reuse/dry these routes in ember.js如何在 ember.js 中重用/干燥这些路线
【发布时间】:2014-02-19 20:16:11
【问题描述】:

我有这些路线

  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,知道您从嵌套问题中得到的问题route 和非嵌套的是一样的。

this.resource('question', { path: ':question_id' });

问题是我不想为此创建一个自定义出口,因为那样我就不会有每个问题的 url。

【问题讨论】:

  • Kingpin 和我似乎对您的问题有不同的解释:您是否正在寻找一种在每个 url 中引用“模态打开/关闭”的方法(kingpin 的答案)?或者您是否正在寻找一种在不更改 url 的情况下以模式打开路线的方法(我的答案)?

标签: javascript ember.js routes


【解决方案1】:

这类问题最好通过使用查询参数和基于参数连接模态来解决。如果您不想这样做,那么如果您希望它是基于 URL 的,那么您真的会在每条路由中构建问题。

这是一个例子:http://emberjs.jsbin.com/ucanam/3566/edit

【讨论】:

  • 我还没有设法使查询参数工作^^。你会有一个带有查询参数和模态的 jsbin 吗?
  • 当然,上面添加的示例。
【解决方案2】:

您正在寻找的是 Ember 的 {{render}} 助手。只需将 {{render 'question' questionModel}} 放在您要使用的模式中即可。

您可以了解渲染助手here

编辑:

这里有一个 jsbin 来展示如何以这种方式使用渲染标签的基本思想。这个 jsbin 以 2 种不同的方式呈现相同的模板;一次绑定到路由 url,一次使用渲染助手。

jsbin here

【讨论】:

  • 假设问题总是被呈现,并且不会基于 URL
  • 非基于 url 的模态。您仍然可以通过 url 直接访问路由。这不是要求的吗?
猜你喜欢
  • 2016-09-03
  • 2019-06-22
  • 2014-02-06
  • 2013-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多