Переход EmberTo queryParams не обновляет модель или URL

Я пытаюсь использовать queryParams для обновления и обновления модели. Я настроил действие на использование route-action, потому что событие изменения, запускающее действие, находится внутри компонента. Я установил ember-route-action-helper, и событие изменения работает правильно, но transitionTo не обновляется.

In filter-list.hbs

<input type="checkbox"
  class="filter-checkbox inp-{{value.filterValueId}}"
  value="{{value.filterValueId}}"
  onchange={{route-action "updateQuery" value.filterValueId list.filterId}}>

In routes/results.js

export default Ember.Route.extend({

queryParams: {
  status: {
    refreshModel:true
  },
  owner: {
    refreshModel:true
  }
},

params: null,

model(params) {
  this.set('params', params);
  return Ember.RSVP.hash({
    result: this.store.query('result', params),
    filter: this.store.findAll('filter'),
    params: params,
  });
},

setupController(controller, model) {
  this._super(...arguments);
  controller.set('result', model.result);
  controller.set('filter', model.filter);
  controller.set('params', model.params);
},

actions: {
  newParams(data){
    console.log("Received", data);
  },
  updateQuery: function() {
    //I make a URL string here from multiple checkboxes
    //and parse the URL string as a JSON object which is
    //modeled the same as a normal queryParameter
    let newParams = JSON.parse('{"' + decodeURI(urlString).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g,'":"') + '"}')
    console.log(newParams);
    this.transitionTo({queryParams: {newParams}});
  }
}

Итак, я сначала извлекаю params из URL-адреса и отправляю их вниз, чтобы получить результаты, а также заполняю список фильтров (список флажков с именами фильтров). Каждый раз, когда я нажимаю на фильтр, если он видит, что флажок изменился, он запускает действие updateQuery под маршрутом, используя route-action.

Действие выполняется (и я получаю правильный вывод newParams в консоли. Строка, которая не работает, это this.transitionT(). Переход вообще ничего не делает. Он не обновляет модель, не меняет URL-адрес, ничего.

Что мне не хватает?


person ntgCleaner    schedule 04.06.2018    source источник


Ответы (1)


Кому интересно, я понял это.

Прямо сейчас я отправляю {queryParams: {newParams}} в функцию transitionTo. Но это превращало newParams в ключ, где объект, который он содержал, был тогда значением, вместо того, чтобы использовать newParams как полный объект.

Я изменил это на {queryParams: newParams}, так что теперь переменная используется как объект, а не как ключ.

this.transitionTo({queryParams: newParams});

person ntgCleaner    schedule 05.06.2018