这是我路由器的一部分:
this.resource('phoneNumbers', function () {
this.resource('locators', function () {
this.route('index');
this.route('new');
this.route('show', { path: '/:locator_id/show' });
this.route('edit', { path: '/:locator_id/edit' });
});
this.resource('phonelocations', function () {
this.route('index');
});
});
有时候我需要做以下事情:
phoneNumbers.locators.index
cancel
按钮currentPath
:this.transitionToRoute(oldCurrentPath);
但transitionToRoute
期待locators.index
而不是完整路径phoneNumbers.locators.index
:
Assertion failed: The route phoneNumbers.locators.index was not found
Uncaught Error: There is no route named phoneNumbers.locators.index.index
(我不知道为什么ember尝试phoneNumbers.locators.index.index
)
为什么?如何“映射”路径的路径?我必须为此保留自己的PATH_TO_ROUTE_MAP
吗?这就是我开始做的事情,并且它有效,但肯定Ember
有更好的方法吗?
另一种方法是捕获当前路线而不是currentPath
。这可能吗?怎么样?
答案 0 :(得分:0)
而不是从afterModel挂钩缓存currentPath缓存中的targetName,
App.PostsRoute = Ember.Route.extend({
afterModel: function(posts, transition) {
//cache transition.targetName
}
});
答案 1 :(得分:0)
钩子中可用的transition
对象有一些关于它在transition.router.currentHandlerInfos
下传播的路径的书籍。
你可以从那里获得以前的状态并将它们缓存到某个地方(也许applicationController
可能是一个更好的地方),然后进行转换。