如何在路由模型挂钩后获得`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>