将参数设置为默认加载路由 - Ember JS



我的余烬项目中有几条路线,有时加载一些视图需要时间,所以我添加了带有自定义文本的加载模板,加载时 ember 会自动显示该模板。

有什么方法可以在加载页面中传递并获取一些参数吗?

例如,在按钮单击操作的步骤 1 中:

  controller.transitionToRoute('submit-invoices',data);

而虽然

提交发票 将加载,显示加载模板....我需要将一些参数传递给加载屏幕。

加载子状态路由的模型钩子会被忽略,但setupController不会。
以下步骤介绍如何为加载子状态路由设置动态模型:
1. 覆盖加载子状态路由
setupController2. 使用paramsFor方法访问加载子状态路由的父路由的params
3. 将模型(基于父级的参数)分配给加载子状态控制器

例:

描述:
路由items可以获取查询参数length
我们想展示一个加载模板,例如:

Loading {{length}} items...
Please wait

实现:

// app/routes/items-loading.js
import Ember from 'ember';
export default Ember.Route.extend({
    setupController(controller/*, model, transition*/) {
        var itemsParams = this.paramsFor('items');
        controller.set('model', Ember.Object.create({
            numberOfItems: itemsParams.length
        }));
    }
});
{{!-- app/templates/items-loading.hbs --}}
Loading {{model.numberOfItems}} items...
Please Wait

因此,当过渡到/items?length=10时,将呈现以下加载模板:

Loading 10 items...
Please wait

注意:使用 Ember.Route.paramsFor您可以访问当前路由链中任何路由的查询参数和动态分段。

最新更新