Я пытаюсь использовать 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-адрес, ничего.
Что мне не хватает?