有没有办法在 Ember.js 路由器中进行条件重定向,而不会破坏路由器的内部一致性?
问问题
5940 次
3 回答
23
你可以做的(截至今天)是这样的:
root: Ember.Route.extend({
index: Ember.Route.extend({
enter: function(router) {
var logged = /* get from appropriated source... */;
Ember.run.next(function() {
if (logged) {
router.transitionTo('loggedIn');
} else {
router.transitionTo('loggedOut');
}
});
}
}),
loggedIn: Ember.Route.extend({
// ...
}),
loggedOut: Ember.Route.extend({
// ...
})
})
不要错过Ember.run.next
as while you are in enter
,状态转换始终处于挂起状态,因此您必须在那之后进行转换。
我们将其用于 authent,但您可以想象将其用于您必须的任何条件...
于 2012-06-25T15:36:05.723 回答
3
新路由器现在包括一个
beforeModel
钩子,您可以在转换到路线时覆盖它以包含条件逻辑。beforeModel 钩子将在
model
钩子被调用,它被传递了一个
transition
目的。您可以决定是否要使用重定向到另一条路线
transitionToRoute()
或者如果您不想通过调用重定向,您可以中止转换
transition.abort()
于 2014-04-28T09:31:30.617 回答
2
根据您要执行的操作,您可能正在寻找条件转换。这包含在另一个 stackoverflow 问题中,其 TLDR 是检查这个小提琴。
于 2012-07-26T16:06:14.730 回答