gpt4 book ai didi

ember.js - 更改查询参数不刷新路由

转载 作者:行者123 更新时间:2023-12-01 12:16:23 24 4
gpt4 key购买 nike

如果查询参数发生变化,我已经在路由中设置了 queryParam 设置以刷新模型。但是,当查询参数更改 setupController不叫。知道为什么会这样吗?

export default Route.extend({
queryParams: {
id: {
refreshModel: true
}
},

setupController(controller) {
controller.start(); // fetches data synchronously from api
}
});

//解决方法感谢 alptugd 的回复
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 并且正如预期的那样,您应该期望 beforeModelmodelafterModelsetupController Hook 运行。然而; setupController 钩子(Hook)有一个细微的差别:

看看 source coderelevant API documentation 中 Ember 的 refreshroute.js 方法的注释。两人都说:

“刷新此路线和任何子路线上的模型,触发 beforeModelmodelafterModel Hook ,其方式与从其他路线过渡时进入路线的方式类似。当前路线参数(例如 article_id )将被传递到相应的模型 Hook ,如果返回不同的模型,setupController 和相关的路由 Hook 也会重新触发。”

这表示;为了在发生 setupController 的情况下触发 refresh;应该从 model 钩子(Hook)返回一个不同的模型。在你的情况下;您没有任何型号 hook ;因此 setupController 不会在 id 参数值更改时被调用。

顺便一提;如果您覆盖 setupController 钩子(Hook),最好调用 super 方法,因为它的唯一目的是将 model 属性保存到 controller 。查看 API 以获得有关此案例的详细说明。

关于ember.js - 更改查询参数不刷新路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47860140/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com