当“基础”路线被激活/重新激活时,有没有办法执行?我有以下网址:
Router.map(function() {
// /projects
this.resource('projects', function() {
// /projects/2
this.resource('project', {path: ':id'});
});
});
如果只有一个项目从transitionTo
路由返回,我想projects
个别项目路线。我可以这样做:
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
return this.store.findAll('project');
},
afterModel: function(projects, transition) {
if (projects && projects.get('length') === 1) {
this.transitionTo('project', projects.get('firstObject'));
}
}
});
这很好用...除了我仍然可以进入projects
路线,因为模型已经加载,钩子不会再次触发。有没有办法在projects
路由被激活时听取总是强制执行该规则?
例如,如果我转到/projects/23
然后我转到/projects
我想将它们自动转换为单个项目路线(如果只有一个)。我不知道如何实现这一点,因为它是一个嵌套路由,并且在第一次访问activate
时已经触发了afterModel
和/projects/23
方法。
这有意义吗?我怎么能做到这一点?
答案 0 :(得分:1)
在项目资源上使用索引路径。它只会在您点击/projects
ProjectsIndex
export default Ember.Route.extend({
model: function() {
var projects = this.modelFor('projects');
if (projects && projects.get('length') === 1) {
this.transitionTo('project', projects.get('firstObject'));
}
},
});