我相信重新加载控制器模型相当于重新进入相同的路线。所以从 2.12.0 开始有很多可能性,
- 您可以向路由发送操作以在当前路由上调用刷新
刷新此路由和任何子路由上的模型,触发 beforeModel、model 和 afterModel 钩子,其方式与从其他路由过渡时进入路由的方式类似。
- 您可以在 url 路径中指定动态段,并在 Route 中使用 transitionTo 方法或在控制器中使用 transitionToRoute。
路由器.map(函数(){
this.route('posts');
this.route('post', { path: '/post/:post_id' });
});
您可以说this.transitionTo('post',123)
这将刷新当前路线,您将在模型挂钩中获得 123 作为参数。
https://guides.emberjs.com/v2.12.0/routing/defining-your-routes/#toc_dynamic-segments
http://emberjs.com/api/classes/Ember.Route.html#method_transitionTo
- 您可以在路由中指定 queryParams,并将 refreshModel 设置为 true。
从“ember”导入 Ember;
导出默认 Ember.Route.extend({
查询参数:{
邮编:{
刷新模型:真
}
},
模型(参数){
//你会通过params.postId从url获取查询参数值
return this.get('store').query('article', params);
}
});
您甚至可以在控制器中提及与 queryParams 相同的 postId。postId
设置属性时它将刷新路线。
import Ember from 'ember';
export default Ember.Controller.extend({
queryParams: ['postId'],
postId: null, //here is the default value. default value will not be shown in URL.
});
https://guides.emberjs.com/v2.12.0/routing/query-params/#toc_opting-into-a-full-transition