我正在尝试从URL获取参数,但似乎根本没有分配它。我正在遵循本指南http://emberjs.com/guides/routing/query-params/
以下是 index.js Controller 。

export default Ember.Controller.extend({

  queryParams: ['authToken'],
  authToken: null,

  init: function() {
    var authToken = this.authToken;
    console.log(authToken);
  }
});

当访问根URL /或/#时,authToken为null,这可以按预期工作。但是,当尝试/#?authToken = 123时,它仍然为null。有任何想法吗 ?

最佳答案

好吧,我无法在authToken钩子(Hook)中获取init的值-我认为这还为时过早,但是您可以将其包装在Ember.run.next方法中,或者在setupControllerIndexRoute钩子(Hook)中获取其值。这按预期工作:

App.IndexRoute = Ember.Route.extend({
  setupController: function (controller, model) {
    console.log(controller.get('authToken'));
  }
});

App.IndexController = Ember.Controller.extend ({
  queryParams: ['authToken'],
  authToken: null,
  init: function() {
    this._super();
    Ember.run.next(this, function() {
      console.log(this.get('authToken'));
    });

  }
});

例如,URL site.com#/?authToken=lol产生以下控制台输出:
app:49 lol
app:59 lol

Working demo.

关于ember.js - Ember 查询参数为空,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28069507/

10-12 22:30