Подтвердить что ты не робот

Как получить доступ к параметрам запроса с маршрута в Ember 1.7

В 1.7 Ember должен поддерживать параметры запроса. У меня нет проблем с их использованием в контроллере, но я хотел бы получить к ним доступ в Маршруте, в идеале, за крюк beforeModel, но крючок модели тоже будет работать.

В документах API упоминается параметр quereyParam для hook beforeModel, но если я пытаюсь его использовать, он всегда undefined.

Руководство по параметрам запросов, похоже, предполагает, что параметры запроса должны быть доступны как часть первого параметра к крючку модели. Но это также undefined. См. Приведенный ниже код.

Есть ли способ доступа к параметрам запроса из маршрута? Благодарим вас за помощь.

App.ApplicationRoute = Em.Route.extend({
   beforeModel: function(transition, queryParams){
       console.log(queryParams.test); //undefined at /?test=123
   },
   model: function(params){
       console.log(params.test); //undefined at /?test=123
   }
}); 
4b9b3361

Ответ 1

Довольно уверен, что это ошибка, но вы можете получить к ней доступ через объект перехода:

App.ApplicationRoute = Em.Route.extend({
   beforeModel: function(transition){
       console.log(transition.queryParams.test);
   }
}

Ответ 2

Задав параметры запроса в контроллере, params будет содержать их автоматически

ApplicationController = Ember.Controller.extend({
  queryParams: ['test'],
  test: null
});

Ответ 3

В последней версии ember вы можете получить значение в Route как

import Ember from 'ember';
export default Ember.Route.extend({
  beforeModel(params){ 
      console.log(params.queryParams.test); //if the parameter contains test as the key
  }
});

Это работает только в том случае, если locationType является авто в файле environment.js.

Ответ 4

В последней версии ember (2.12 на момент написания этого ответа), запросParams можно получить в крючке модели следующим образом:

import Ember from 'ember';

export default Ember.Route.extend({
    queryParams: {
        test: ''
    },
    model(params) {
        console.log(params.test);
    },
});

Обратите внимание, что теперь и динамический сегмент, и queryParams доступны через объект params. Поскольку params недоступен в hook beforeModel, это решение работает, когда вам нужно получить доступ к queryParams в model.

Ответ 5

Если вы хотите получить доступ к действию didTransition,

didTransition: (queryParams) ->
  console.log(@get('queryParams'))