我有两个嵌套路由,projects
和projects/project
。每当我打开project
时,我都希望刷新projects
路由。
我所知道的是在setupController
挂接期间调用一个控制器函数(最终将在projects
路由中调用refresh
)。类似这样的东西:
// project route
setupController: function(controller, model) {
this.controllerFor('projects').send('search');
controller.set('model', model)
}
// projects controller
actions: {
search: function() {
// do other things
this.send('refreshModel');
}
}
// projects route
actions: {
refreshModel: function() {
this.refresh();
}
}
问题是,当调用refresh
函数时,它不仅刷新当前路由,还刷新所有子路由,这意味着这个setupController
钩子将再次执行,从而创建这个无限循环。
有没有办法让Ember只刷新当前的路线,而忽略它的孩子?
谢谢。
要直接回答,没有办法只刷新父路由。然而,您可能只需要重新加载模型,就可以获得所需的行为。
关于DS.Model#reload
,请参见相关API文档。