Ответ 1
Довольно уверен, что это ошибка, но вы можете получить к ней доступ через объект перехода:
App.ApplicationRoute = Em.Route.extend({
beforeModel: function(transition){
console.log(transition.queryParams.test);
}
}
В 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
}
});
Довольно уверен, что это ошибка, но вы можете получить к ней доступ через объект перехода:
App.ApplicationRoute = Em.Route.extend({
beforeModel: function(transition){
console.log(transition.queryParams.test);
}
}
Задав параметры запроса в контроллере, params
будет содержать их автоматически
ApplicationController = Ember.Controller.extend({
queryParams: ['test'],
test: null
});
В последней версии 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.
В последней версии 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
.
Если вы хотите получить доступ к действию didTransition,
didTransition: (queryParams) ->
console.log(@get('queryParams'))