我有一个案例,transitionToRoute().then(...)
从一个子路由转换后解析,但不从另一个子路径转换。
但我没有看到任何区别:
路线:
this.resource('departments', {path: '/'}, function() {
this.resource('department', { path: 'department/:department_id' }, function() {
this.resource('posts', { path: '/timeline' }, function(){
this.resource('post', { path: '/:post_id' });
});
...
当我在路线' departments.department.posts.index' 时,我可以通过我的departmentsController进行transitionRoRoute,并且承诺将解决:
this.transitionToRoute('posts.index', department).then(function() {
callback();
});
然而,当我处于更深层次的路线时:' departments.department.posts.post' 当时的承诺没有解决。
我是否缺少一些使回调无法解决的逻辑?
答案 0 :(得分:3)
实际上没有更深层次的路线'departments.department.posts.post'。由于在“儿童”路线中遗漏了父母的姓名,因此路由器的地图几乎是平的。你可以自己探索一下:我准备了一个例子:http://emberjs.jsbin.com/dokuqozivice/1/ 这可能是你观察到奇怪行为的原因。
承诺失败的一般原因是在转换序列中中止转换。除了已经描述的原因之外,可能有几个原因。您可以打开跟踪选项以进行深度调试:
App = Ember.Application.create({
LOG_STACKTRACE_ON_DEPRECATION: true,
LOG_BINDINGS: true,
LOG_TRANSITIONS: true, // print all transitionTo information
LOG_TRANSITIONS_INTERNAL: true,
LOG_VIEW_LOOKUPS: true,
LOG_ACTIVE_GENERATION: true
});