Полный переход после обновления параметров запроса в ember
У меня есть следующий маршрут, который запускает отчет для определенного диапазона дат:
export default Ember.Route.extend({
model: function(params){
return this.store.query('report' {
"report":"my_report",
"from":params.startDate,
"to":params.endDate
});
},
setupController: function(controller, model) {
this._super(controller, model);
// change format model and save it in rows
controller.set('model', rows);
}
});
Теперь мой контроллер выглядит следующим образом:
export default Ember.Controller.extend({
queryParams:["startDate","endDate"],
actions:{
processReport:function(from,to){
this.transitionToRoute('reports',{
queryParams :{
"startDate":from,
"endDate":to,
"refreshModel": true
}
});
}
},
to:"",
from:""
});
Шаблон выглядит следующим образом:
From {{bootstrap-datepicker value=to}}
To {{bootstrap-datepicker value=from}}
<button {{action "processReport" from to}}>Process Report</button>
Итак, когда я нажимаю кнопку, URL-адрес меняется и консоль показывает:
Attempting transition to reports ember.debug.js:52602
Transitioned into 'reports' ember.debug.js:27426
но страница остается такой же. Как мне полностью перейти на страницу?
2 ответа
Вы должны добавить в свой маршрут конфигурацию queryParams, чтобы сделать полный переход
export default Ember.Route.extend({
queryParams: {
startDate: {
refreshModel: true
},
endDate: {
refreshModel: true
}
},
...
А на контроллере вам нужно просто обновить значения "startDate" и "endDate" в настраиваемом действии:
Export default Ember.Controller.extend({
queryParams:["startDate","endDate"],
actions:{
processReport:function(){
this.set('startDate', this.get('from'));
this.set('endDate', this.get('to'));
}
},
to:"",
from:""
});
Это было объяснено в руководствах:
Я понял это самостоятельно, прочитав обновленный API по параметрам запроса по следующей ссылке: https://guides.emberjs.com/v2.3.0/routing/query-params/