【问题标题】:Does Ember need a route to be generated for every screenEmber 是否需要为每个屏幕生成路由
【发布时间】:2016-05-27 06:52:34
【问题描述】:

我遇到以下情况;

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

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

选定的用户数据将填充第 1 步“查找”字段中的值。

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

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

【问题讨论】:

    标签: javascript ember.js


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢所有选项!几个问题; 1.由于第 1 步是用户输入表单,如果我使用新路线并导航到它然后返回,如何在第 1 步 2 中保留早期用户输入的值。对于第 3 个解决方案,我如何使用组件名称作为动态段 ?如果你能列出任何例子,那将是非常棒的。
    • 好吧,1:使用模型来保存数据。由于您实时绑定用户输入,因此您只需要保留模型。记住:控制器是单例的,可以保持状态!或者给模型前进和后退。 2:使用component 助手。所以{{component componentName}}like here
    【解决方案2】:

    对我来说,你的场景看起来像是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');
      }
    });
    

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

    【讨论】:

    • 2 个问题; 1. 查找很常见,但从不同的地方/工作流程中调用。那么这可以处理 /workflow1/lookup 、 /workflow2/lookup 、 /workflow3/lookup 等 2. 创建新路线是处理新“查找”屏幕的唯一方法吗?
    • ans 1:我们可以从任何地方访问嵌套路由。 ans2:因为我们可以从任何地方访问嵌套路由,所以不需要为它创建单独的路由。
    • 在您的示例中,您使用的是嵌套路由,但这也需要使用动态段。那么您能否展示具有多个工作流(w1、w2、w3)并且每个工作流在它们下都有共同查找的示例
    猜你喜欢
    • 2017-06-21
    • 2018-08-17
    • 1970-01-01
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-01
    相关资源
    最近更新 更多