在Ember中,transition.retry()不发送查询字符串参数

时间:2014-08-15 21:25:43

标签: javascript ember.js

我有一个路由mixin,它将检查用户是否经过身份验证,如果没有,请将他们带到登录页面。一旦他们登录,我将他们重定向回他们最初尝试去的页面。我使用Ember的suggested solution来存储和重试转换。这很好用。问题是,当我尝试添加查询字符串参数时,它不会在转换中传递。

现在我知道我可以this但我更喜欢使用transition.retry方法。

有什么想法吗?

Ember的建议解决方案

App.SomeAuthenticatedRoute = Ember.Route.extend({
  beforeModel: function(transition) {
    if (!this.controllerFor('auth').get('userIsLoggedIn')) {
      var loginController = this.controllerFor('login');
      loginController.set('previousTransition', transition);
      this.transitionTo('login');
    }
  }
});

App.LoginController = Ember.Controller.extend({
  actions: {
    login: function() {
      // Log the user in, then reattempt previous transition if it exists.
      var previousTransition = this.get('previousTransition');
      if (previousTransition) {
        this.set('previousTransition', null);
        previousTransition.retry();
      } else {
        // Default back to homepage
        this.transitionToRoute('index');
      }
    }
  }
});

我目前正在使用

this.transitionTo('posts', {queryParams: {sort: 'title'}});

1 个答案:

答案 0 :(得分:1)

有一个问题在谈论这个问题,并且还提交了相关的PR。 https://github.com/emberjs/ember.js/pull/4008

Currentlly,retry无法传递查询参数