我的ember项目中有几个路由,有时加载一些视图需要时间,所以我添加了自定义文本的加载模板,加载时自动显示为ember。
有没有办法在加载页面中传递并获取一些参数?
例如,在按钮点击操作的步骤1中:
controller.transitionToRoute('submit-invoices',data);
和
提交 - 发票 将加载,加载模板显示....我需要将一些参数传递给加载屏幕。
答案 0 :(得分:2)
Loading substate route的模型钩子被忽略,但setupController
不是
这些步骤描述了如何为加载子状态路由设置动态模型:
1.覆盖加载子状态路由的setupController
2.使用params
方法访问加载子状态路由的父路由的paramsFor
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
,您可以访问查询参数以及当前路径链中任何路径的动态细分。