Ember路由器转换为不存在的路由

时间:2015-11-09 18:41:53

标签: ember.js

我的ember应用程序出现问题,只要登录页面加载一次,我就可以正常登录,它会将我带到正确的页面。但是,当我刷新登录页面然后登录时,它会转到我路由器中未设置的奇怪路由。

正确的转换应为login - > authenticated.individual.info

但它带我的路线是login - > login.individual.info

我真的很困惑什么会导致路由器将我发送到不存在的路由,或者我可能不太熟悉路由器的工作方式。

应用/ router.js

Router.map(function() {
  this.route('authenticated', { path: '/:slug' }, function() {
    this.resource('individual',  { path: 'individual/:id' }, function() {
      this.route('info');
    });
  });
  this.route('login', { path: 'login/:slug' });
});

slug本质上是一个个人短名称,与每位用户的会员信息数据相关联。

应用/登录/ route.js

import Ember from 'ember';
var bind = Ember.run.bind;

export default Ember.Route.extend({
  model: function(params) {
    return {'slug': params.slug};
  },

  actions: {
    login: function(credentials) {
      this.get('session').login(credentials)
        .then(bind(this, 'authenticationDidSucceed'),
              bind(this, 'authenticationDidFail'));
    }
  },

  authenticationDidSucceed: function() {
    var transition = this.get('controller.attemptedTransition');
    var individual_id = this.get('session').individual_id;
    if (transition) {
      transition.retry();
    } else {
      this.transitionTo('individual.info', individual_id);
    }
  },

  authenticationDidFail: function(response) {
    var message = response.responseJSON.error;
    this.set('controller.error', message);
  },

  resetController: function(controller) {
    controller.setProperties({error: null, notice: null});
  }
});

应用/登录/ template.hbs

...
<div class='form-group'>
  <button {{action 'login' model}} type='submit' class="btn btn-default form-control">Sign in</button>
</div>
...

1 个答案:

答案 0 :(得分:0)

authenticationDidSucceed方法中,您需要转换为特定路线名称this.transitionTo('authenticated.individual.info')。看起来Ember只是查看该路线的当前叶子,而不是转换到不同的路径叶片。