Выключите липкие параметры запроса в 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 7

1 ответ:

Это дает вам два варианта того, как справиться с этим в руководствах: https://guides.emberjs.com/release/routing/query-params/#toc_sticky-query-param-values

Похоже, что вариант №2 довольно близок к тому, что вы делаете:

Используйте маршрут.крюк resetController для установки значений параметров запроса обратно к их значениям по умолчанию перед выходом из маршрута или изменением модели маршрута.