Ember是否需要为每个屏幕生成一条路线

时间:2016-02-16 06:08:18

标签: javascript ember.js

我有以下情况;

有多个工作流程。采取工作流程1 这是一个包含步骤1的用户输入表单的3步工作流程。所以我为此/ workflow1 / step1创建了一个路径

现在在这个step1表单上,我有一个字段(查找值)&旁边的按钮,点击它,我需要显示一个新的屏幕(这将完全取代step1屏幕)。在此屏幕上再次是一种形式(一种过滤器),用户可以根据此查找表单进行过滤并选择任何数据。

所选用户数据将填充step1"查找"中的值。字段。

不,我的问题是,实现此查找屏幕的最佳方式是什么。

  1. 我是否必须创建一个新路由(例如/ lookup),即在根级别并实现它?
  2. 这个查找屏幕将从多个地方(例如来自workflow2,workflow3)进行调用,并且它的行为在所有情况下都是相同的。唯一不同的是它的选择值将转到调用工作流程的第1步。 (即它可以是/ workflow1 / step1 OR / workflow2 / step1)
  3. Ember中有什么方法可以实现这样的屏幕,而不必为它生成单独的路径吗?

2 个答案:

答案 0 :(得分:0)

您可以为此创建路线,但对我来说,它看起来更像是模态形式。 我将创建一个查找组件,然后使用布尔值来切换此组件的可见性。全尺寸白色背景,涵盖其他一切。简单。

请记住,DOM的其余部分仍然会被渲染。

如果要更改网址,仍可以创建路由。也绝对不是一个糟糕的解决方案!

您还可以创建组件路径,将组件名称用作动态段,并使用component帮助程序调用组件。这么多选择!

答案 1 :(得分:-1)

对我来说,您的方案看起来是nested routes

当您想在另一个模板中显示模板时,Ember为嵌套路由提供完全支持。在你的情况下:

1.在根级创建一条路线,这将是您的工作流路线。

Router.map(function() {
  this.route('workflow', { path: '/workflow' });
});

在此,您可以将模板放入第1步。

2.创建一个嵌套的查找路径,该路由将嵌套在workflow路由中。

  Router.map(function() {
    this.route('workflow', { path: '/workflow' }, function(){
      this.route('lookup',{ path: '/lookup' });
    });
  });

如果您想拥有w1w2w3等工作流程,那么您可以为它们创建路由并使用rendertemplate函数呈现相同的{{1}在所有。

lookout

同样,您可以使用相同的了望模板创建其他两个工作流程。