transitionToRoute()。然后没有解决

时间:2014-09-18 09:21:01

标签: javascript ember.js

我有一个案例,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' 当时的承诺没有解决。

我是否缺少一些使回调无法解决的逻辑?

1 个答案:

答案 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
});