如何在EmberJS中访问动态路径的变量

时间:2016-05-28 05:35:28

标签: ember.js

我已经完成了

ember g route auth
ember g route auth/pending

然后给了我:

app/
  routes/
    auth/
      pending.js
    auth.js

我的路由器有

  this.route('auth', function() {
    this.route('pending', { path: '/pending/:steamid/:token'});
  });

当我访问

时,一切都很好

http://localhost:4200/auth/pending/1/2

页面加载,但如何在:steamid之外访问:tokenmodel

我想使用它,以便我可以在session服务

中设置值

像:

import Ember from 'ember';

export default Ember.Route.extend({
  session: Ember.inject.service(),

  steamID: this.get(// Params Some How),
  token: this.get(// Params some How)

  thing(params) {
    this.get('session').set('tokenID', token),
    this.get('session').set('steamID', steamID)
  }
});

^^伪代码表达我想要完成的事情。

2 个答案:

答案 0 :(得分:1)

虽然它不在网站文档中,但查看传递给某些Transition个钩子的Route对象的source code(例如afterModel和{{ 1}})它有一个beforeModel属性,其中包含动态段params。

所以你可以,例如:

params

答案 1 :(得分:0)

您可以通过许多不同的钩子在服务中设置它们:

import Ember from 'ember';

export default Ember.Route.extend({

  session: Ember.inject.service(),

  /* Access from beforeModel */
  beforeModel(transition) {
    this.get('session').setProperties({
      tokenID: transition.params.token,
      steamID: transition.params.steamid
    });
  },

  /* Access from model */
  model(params, transition) {
    this.get('session').setProperties({
      tokenID: params.token,
      steamID: params.steamid
    });
  }
});

如果你问我型号挂钩是最好的选择。特别是如果您希望查询参数在每次更改时刷新模型(请参阅guide)。