我的余烬项目中有几条路线,有时加载一些视图需要时间,所以我添加了带有自定义文本的加载模板,加载时 ember 会自动显示该模板。
有什么方法可以在加载页面中传递并获取一些参数吗?
例如,在按钮单击操作的步骤 1 中:
controller.transitionToRoute('submit-invoices',data);
而虽然
提交发票 将加载,显示加载模板....我需要将一些参数传递给加载屏幕。
加载子状态路由的模型钩子会被忽略,但setupController
不会。
以下步骤介绍如何为加载子状态路由设置动态模型:
1. 覆盖加载子状态路由
的setupController
2. 使用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
您可以访问当前路由链中任何路由的查询参数和动态分段。