我有一个简单的路由调用
model: function(params) {
return this.store.find("booking", params.booking_id);
},
访问路线时,可以进行更改,并且我希望下次在同一会话中再次访问该页面时将其重置,除非已保存。现在似乎没有一个简单,直接的替代方法来刷新通过{ reload: true }
获得的数据。
我该怎么做?谢谢。
答案 0 :(得分:0)
要刷新余烬模型,可以使用this.refresh();
。
要在离开路线时回滚所有属性,可以使用this.controller.get('model').rollbackAttributes();
让我们假设有一条名为post
在您的routes/post.js
...
export default Route.extend({
...
model: function() {
....
},
actions: {
refreshModel: function() {
this.refresh();
},
willTransition() {
this.controller.get('model').rollbackAttributes();
}
}
以refreshModel
的身份从controller
调用this.sendAction('refreshModel')
动作
答案 1 :(得分:0)
您的路线具有动态细分。生成到该路线的链接时,可以选择将模型上下文或id传递给该路线。
如果传递模型上下文,则不会触发model()挂钩,并且ember将使用其当前在商店中持有的任何值。如果您传递model.id,则model()挂钩将触发并获取最新数据。
检查到此路由的链接生成,并查看您是否将booking
或booking.id
传递到该路由。
https://guides.emberjs.com/release/routing/specifying-a-routes-model/