Javascript Ember是否需要为每个屏幕生成路由

Javascript Ember是否需要为每个屏幕生成路由,javascript,ember.js,Javascript,Ember.js,我有下面的场景 有多个工作流。采取工作流程1 这是一个三步工作流,第1步为用户输入表单。因此,我为这个/workflow1/step1创建了一个路由 现在在这个step1表单上,我在它旁边有一个字段(查找值)&按钮,点击它,我需要显示一个新屏幕(这将完全取代step1屏幕)。在这个屏幕上又是一个表单(一种过滤器),用户可以根据这个查找表单进行过滤并选择任何数据 所选用户数据将填充step1“查找”字段中的值 不,我的问题是,实现此查找屏幕的最佳方式是什么 我是否必须在根级别创建一个新路由(比如说

我有下面的场景

有多个工作流。采取工作流程1 这是一个三步工作流,第1步为用户输入表单。因此,我为这个/workflow1/step1创建了一个路由

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

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

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

  • 我是否必须在根级别创建一个新路由(比如说/查找)并实现它
  • 这个查找屏幕将从多个位置被调用(比如从workflow2、workflow3),并且它的行为在所有情况下都是相同的。唯一的区别是它的选定值将进入调用工作流的步骤1。(即,它可以是/workflow1/step1或/workflow2/step1)
  • 在Ember中是否有任何方法可以实现这种屏幕,而不必为其生成单独的路由

  • 在我看来,您的场景看起来是
    嵌套路由

    当您希望在另一个模板中显示模板时,Ember提供对嵌套管线的完全支持。就你而言:

    1.在根级别创建一个路由,它将成为您的工作流路由

    Router.map(function() {
      this.route('workflow', { path: '/workflow' });
    });
    
    您可以在上面放置步骤1的模板

    2.创建用于查找的嵌套路由,该路由将嵌套在
    工作流
    路由中

      Router.map(function() {
        this.route('workflow', { path: '/workflow' }, function(){
          this.route('lookup',{ path: '/lookup' });
        });
      });
    
    如果您想拥有像
    w1
    w2
    w3
    这样的工作流,那么您可以为它们创建路由,并使用
    rendertemplate
    函数渲染所有相同的
    了望

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

    类似地,您可以使用相同的lookout模板创建其他两个工作流。

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

    请记住,DOM的其余部分仍然是渲染的

    如果要更改url,仍然可以创建路由。也绝对不是一个坏的解决方案


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

    2个问题;1.查找很常见,但从不同位置/工作流调用。所以这个句柄/workflow1/lookup、/workflow2/lookup、/workflow3/lookup等等都可以。创建新路由是处理新“查找”屏幕的唯一方法吗?回答1:我们可以从任何地方访问嵌套路由。ans2:因为我们可以从任何地方访问嵌套路由,所以无需为其创建单独的路由。在您的示例中,您使用的是嵌套路由,但这也需要使用动态段。因此,您可以展示具有多个工作流(w1、w2、w3)的示例,并且每个工作流下都有公共查找感谢所有选项!两个问题;1.由于step1是一个用户输入表单,如果我使用一个新的路由并导航到它,然后返回,我如何在step1 2中保留先前用户输入的值。对于第三种解决方案,如何使用组件名称作为动态段?如果你能列出任何例子,那就太好了。1:使用模型来保存数据。因为您可以实时绑定用户输入,所以只需要持久化模型。记住:控制器是单态的,可以保持状态!或者向前和向后给出模型。2:使用
    组件
    辅助程序。所以
    {{component component name}}
    就像