余烬是否需要为每个屏幕生成路由

Does Ember need a route to be generated for every screen

本文关键字:屏幕 路由 是否 余烬      更新时间:2023-09-26

我遇到以下情况;

有多个工作流。采用工作流程1这是一个 3 步工作流程,在步骤 1 中带有用户输入表单。所以我为此/工作流1/step1创建了一个路由

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

选定的用户数据将填充步骤1"查找"字段中的值。

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

  1. 我是否必须创建一个新路由(例如/lookup(,即在根级别并实现它?
  2. 此查找屏幕将从多个位置(例如从工作流 2、工作流 3(调用,并且它的行为在所有情况下都是相同的。唯一的区别是它的选定值将转到调用工作流的第 1 步。(即它可以是/workflow1/step1 或/workflow2/step1(
  3. Ember 中有什么方法可以实现这种屏幕,而不必为其生成单独的路由?

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

请记住,DOM 的其余部分仍在渲染。

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

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

对我来说

,你的场景看起来很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函数来渲染相同的lookout

App.w1Route = Ember.Route.extend({
  renderTemplate: function() {
    this.render('lookout');
  }
});

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