更改Query Param不刷新路由
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更改Query Param不刷新路由相关的知识,希望对你有一定的参考价值。
如果查询参数更改,我已在路径中设置查询Param设置以刷新模型。但是当查询参数更改时,qazxsw poi未被调用。知道为什么会这样吗?
setupController
//解决方案感谢alptugd的回复
export default Route.extend({
queryParams: {
id: {
refreshModel: true
}
},
setupController(controller) {
controller.start(); // fetches data synchronously from api
}
});
export default Route.extend({
queryParams: {
id: {
refreshModel: true
}
},
model() {
// Returning a new array/object/value everytime the hook is called, causes the
// setupController hook to be called.
return [];
}
setupController(controller) {
controller.start(); // fetches data synchronously from api
}
});
迫使前往refreshModel
的路线,正如预期的那样,你应该期待refresh
,beforeModel
,model
和afterModel
钩子。然而; setupController
钩子有一个小的区别:
看看setupController
或refresh
中关于Ember's route.js
的source code方法的评论。两人都说:
“刷新此路线上的模型和任何子路线,以类似的方式触发relevant API documentation,beforeModel
和model
钩子,以便在从其他路线转换时输入路线。当前路线参数(例如afterModel
)将被传递到相应的模型钩子,如果返回不同的模型,article_id
和相关的路线钩子也将重新开火。“
这意味着;为了在发生setupController
的情况下触发setupController
;应该从refresh
钩子返回一个不同的模型。在你的情况下;你没有任何型号model
;因此,hook
不会被称为setupController
param值变化。
顺便说说;如果你覆盖id
钩子,调用super方法是一个好习惯,因为它的唯一目的是将setupController
属性保存到model
。请查看controller
,了解有关此案例的详细说明。
以上是关于更改Query Param不刷新路由的主要内容,如果未能解决你的问题,请参考以下文章