如何在路线模型钩后获得`params.id`?

时间:2017-09-05 12:10:14

标签: ember.js ember-router

成功加载我的页面后,稍后我想重定向到包含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?
    },

有人帮我吗? 提前谢谢。

2 个答案:

答案 0 :(得分:1)

由于模型,您的模板具有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>

答案 1 :(得分:0)

这取决于你想要从哪里调用路线转换。

如果你从路由器调用转换,那么只需将params数据(或只是id)保存到路由器中的本地变量。

如果在组件中完成转换,则将params数据(或仅id)作为模型的一部分传递给组件。