[英]execute code only when the “base” route is activated in emberjs
激活/重新激活“基本”路由時,是否有執行方法? 我有以下網址:
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
我想將它們自動轉換為單個項目路由(如果只有一個)。 我不知道該怎么做,因為這是一條嵌套路線,並且第一次訪問/projects/23
時已經activate
了activate
和afterModel
方法。
那有意義嗎? 我怎么能做到這一點?
在項目資源上使用索引路由。 僅當您命中/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'));
}
},
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.