如何在路由模型挂钩后获得`params.id`?
How to get `params.id` after the model hook in route?
我的页面成功加载后,稍后我想重定向到包含 params.id
信息的下一页。随时检索 params
的正确方法是什么?
这是我的 router.js:
export default Ember.Route.extend(Validation, {
model: function(params) { //where to store?
if(this.store.hasRecordForId('card-list', params.id)){
return this.store.peekRecord('card-list', params.id );
}
},
actions:{
goToNext(){
return;
this.transitionTo('cs2i.balance.balanceReview', 12 ); //how to get id?
},
有人帮我吗?
提前致谢。
这取决于你想从哪里调用路由转换。
如果您从路由器调用转换,则只需将参数数据(或仅 id)保存到路由器中的局部变量。
如果转换是在组件中完成的,将参数数据(或只是 id)作为模型的一部分传递给组件。
您的模板因型号而具有 id。所以你可以直接把它传递给动作。
注意:这是直接链接到同一路线,您需要做一些数学运算才能在 goToNext 中获取下一个 ID。但在删除一条记录并创建另一条记录的情况下,ID 的一致性不足以进行简单的 +1。最好有下一条记录的实际 ID。这可能是在 API 的关系。然后你可以做类似 model.previousId 的事情而不是 model.id.
// route.js
export default Ember.Route.extend(Validation, {
model: function(params) {
if(this.store.hasRecordForId('card-list', params.id)){
return this.store.peekRecord('card-list', params.id ;
}
},
actions:{
goToNext(paramId) {
this.transitionTo('cs2i.balance.balanceReview', paramId);
},
}
});
// template.hbs
<button {{action 'goToNext' model.id}}></button>
我的页面成功加载后,稍后我想重定向到包含 params.id
信息的下一页。随时检索 params
的正确方法是什么?
这是我的 router.js:
export default Ember.Route.extend(Validation, {
model: function(params) { //where to store?
if(this.store.hasRecordForId('card-list', params.id)){
return this.store.peekRecord('card-list', params.id );
}
},
actions:{
goToNext(){
return;
this.transitionTo('cs2i.balance.balanceReview', 12 ); //how to get id?
},
有人帮我吗? 提前致谢。
这取决于你想从哪里调用路由转换。
如果您从路由器调用转换,则只需将参数数据(或仅 id)保存到路由器中的局部变量。
如果转换是在组件中完成的,将参数数据(或只是 id)作为模型的一部分传递给组件。
您的模板因型号而具有 id。所以你可以直接把它传递给动作。
注意:这是直接链接到同一路线,您需要做一些数学运算才能在 goToNext 中获取下一个 ID。但在删除一条记录并创建另一条记录的情况下,ID 的一致性不足以进行简单的 +1。最好有下一条记录的实际 ID。这可能是在 API 的关系。然后你可以做类似 model.previousId 的事情而不是 model.id.
// route.js
export default Ember.Route.extend(Validation, {
model: function(params) {
if(this.store.hasRecordForId('card-list', params.id)){
return this.store.peekRecord('card-list', params.id ;
}
},
actions:{
goToNext(paramId) {
this.transitionTo('cs2i.balance.balanceReview', paramId);
},
}
});
// template.hbs
<button {{action 'goToNext' model.id}}></button>