Выключите липкие параметры запроса в Ember.JS
Я нашел jsbin, который иллюстрирует мою проблему. http://emberjs.jsbin.com/ucanam/2708 .
Эта последняя ссылка, где нет явных параметров запроса, установленных на link-to, использует текущее значение параметра sticky query на контроллере. Есть ли способ отключить эту липкую функцию? Нарушит ли это другие сценарии?
Мое текущее решение состоит в том, чтобы обнулить параметры запроса на каждом маршруте, который я хочу очистить:
export default Ember.Route.extend({
deactivate: function() {
var controller = this.controllerFor(this.get('controllerName'));
var queryParams = controller.get('queryParams');
for (var i = 0; i < queryParams.length; i++)
controller.set(queryParams[i], null);
}
});
Это работает, но кажется, что должен быть более легкий путь.
Я должен отметить, что делать что-то вроде {{#link-to 'route' (query-params val=null)}}{{/link-to}}
для каждого маршрута не вариант, потому что у меня есть некоторый повторно используемый код, где маршрут является переменной, поэтому я не буду знать параметры запроса, которые я должен обнулить.
Правка:
Вот правильный способ сделать это, в случае, если Док от ответа изменится:
export default Ember.Route.extend({
resetController: function(controller, isExiting) {
if (isExiting) {
var queryParams = controller.get('queryParams');
for (var i = 0; i < queryParams.length; i++)
controller.set(queryParams[i], null);
}
}
});
Правка 2:
Теперь это очень легко сделать с помощью этого аддона https://github.com/kellyselden/ember-query-params-reset . Он также сбрасывается на исходные ценности, а не просто обнуление ценностей.
1 ответ:
Это дает вам два варианта того, как справиться с этим в руководствах: https://guides.emberjs.com/release/routing/query-params/#toc_sticky-query-param-values
Похоже, что вариант №2 довольно близок к тому, что вы делаете:
Используйте маршрут.крюк resetController для установки значений параметров запроса обратно к их значениям по умолчанию перед выходом из маршрута или изменением модели маршрута.